text: /**
   * @file
   * JavaScript behaviors for CodeMirror integration.
   */
  
  (function ($, Drupal) {
  
    'use strict';
  
    // @see http://codemirror.net/doc/manual.html#config
    Drupal.webform = Drupal.webform || {};
    Drupal.webform.codeMirror = Drupal.webform.codeMirror || {};
    Drupal.webform.codeMirror.options = Drupal.webform.codeMirror.options || {};
  
    /**
     * Initialize CodeMirror editor.
     *
     * @type {Drupal~behavior}
     */
    Drupal.behaviors.webformCodeMirror = {
      attach: function (context) {
        if (!window.CodeMirror) {
          return;
        }
  
        // Webform CodeMirror editor.
        $(context).find('textarea.js-webform-codemirror').once('webform-codemirror').each(function () {
          var $input = $(this);
  
          // Open all closed details, so that editor height is correctly calculated.
          var $details = $input.parents('details:not([open])');
          $details.attr('open', 'open');
  
          // #59 HTML5 required attribute breaks hack for webform submission.
          // https://github.com/marijnh/CodeMirror-old/issues/59
          $input.removeAttr('required');
  
          var options = $.extend({
            mode: $input.attr('data-webform-codemirror-mode'),
            lineNumbers: true,
            lineWrapping: ($input.attr('wrap') !== 'off'),
            viewportMargin: Infinity,
            readOnly: !!($input.prop('readonly') || $input.prop('disabled')),
            extraKeys: {
              // Setting for using spaces instead of tabs - https://github.com/codemirror/CodeMirror/issues/988
              Tab: function (cm) {
                var spaces = Array(cm.getOption('indentUnit') + 1).join(' ');
                cm.replaceSelection(spaces, 'end', '+element');
              },
              // On 'Escape' move to the next tabbable input.
              // @see http://bgrins.github.io/codemirror-accessible/
              Esc: function (cm) {
                // Must show and then textarea so that we can determine
                // its tabindex.
                var textarea = $(cm.getTextArea());
                $(textarea).show().addClass('visually-hidden');
                var $tabbable = $(':tabbable');
                var tabindex = $tabbable.index(textarea);
                $(textarea).hide().removeClass('visually-hidden');
  
                // Tabindex + 2 accounts for the CodeMirror's iframe.
                $tabbable.eq(tabindex + 2).trigger('focus');
              }
  
            }
          }, Drupal.webform.codeMirror.options);
  
          var editor = CodeMirror.fromTextArea(this, options);
  
          // Now, close details.
          $details.removeAttr('open');
  
          // Apply the textarea's min/max-height to the CodeMirror editor.
          if ($input.css('min-height')) {
            var minHeight = $input.css('min-height');
            $(editor.getWrapperElement())
              .css('min-height', minHeight)
              .find('.CodeMirror-scroll')
              .css('min-height', minHeight);
          }
          if ($input.css('max-height')) {
            var maxHeight = $input.css('max-height');
            $(editor.getWrapperElement())
              .css('max-height', maxHeight)
              .find('.CodeMirror-scroll')
              .css('max-height', maxHeight);
          }
  
          // Issue #2764443: CodeMirror is not setting submitted value when
          // rendered within a webform UI dialog or within an Ajaxified element.
          var changeTimer = null;
          editor.on('change', function () {
            if (changeTimer) {
              window.clearTimeout(changeTimer);
              changeTimer = null;
            }
            changeTimer = setTimeout(function () {editor.save();}, 500);
          });
  
          // Update CodeMirror when the textarea's value has changed.
          // @see webform.states.js
          $input.on('change', function () {
            editor.getDoc().setValue($input.val());
          });
  
          // Set CodeMirror to be readonly when the textarea is disabled.
          // @see webform.states.js
          $input.on('webform:disabled', function () {
            editor.setOption('readOnly', $input.is(':disabled'));
          });
  
          // Delay refreshing CodeMirror for 500 millisecond while the dialog is
          // still being rendered.
          // @see http://stackoverflow.com/questions/8349571/codemirror-editor-is-not-loading-content-until-clicked
          setTimeout(function () {
            // Show tab panel and open details.
            var $tabPanel = $input.parents('.ui-tabs-panel:hidden');
            var $details = $input.parents('details:not([open])');
  
            if (!$tabPanel.length && $details.length) {
              return;
            }
  
            $tabPanel.show();
            $details.attr('open', 'open');
  
            editor.refresh();
  
            // Hide tab panel and close details.
            $tabPanel.hide();
            $details.removeAttr('open');
          }, 500);
        });
  
        // Webform CodeMirror syntax coloring.
        if (window.CodeMirror.runMode) {
          $(context).find('.js-webform-codemirror-runmode').once('webform-codemirror-runmode').each(function () {
            // Mode Runner - http://codemirror.net/demo/runmode.html
            CodeMirror.runMode($(this).addClass('cm-s-default').text(), $(this).attr('data-webform-codemirror-mode'), this);
          });
        }
  
      }
    };
  
  })(jQuery, Drupal);
  ;
  /**
  * DO NOT EDIT THIS FILE.
  * See the following change record for more information,
  * https://www.drupal.org/node/2815083
  * @preserve
  **/
  
  (function ($, Drupal) {
    Drupal.theme.progressBar = function (id) {
      return "<div id=\"".concat(id, "\" class=\"progress\" aria-live=\"polite\">") + '<div class="progress__label">&nbsp;</div>' + '<div class="progress__track"><div class="progress__bar"></div></div>' + '<div class="progress__percentage"></div>' + '<div class="progress__description">&nbsp;</div>' + '</div>';
    };
  
    Drupal.ProgressBar = function (id, updateCallback, method, errorCallback) {
      this.id = id;
      this.method = method || 'GET';
      this.updateCallback = updateCallback;
      this.errorCallback = errorCallback;
      this.element = $(Drupal.theme('progressBar', id));
    };
  
    $.extend(Drupal.ProgressBar.prototype, {
      setProgress: function setProgress(percentage, message, label) {
        if (percentage >= 0 && percentage <= 100) {
          $(this.element).find('div.progress__bar').css('width', "".concat(percentage, "%"));
          $(this.element).find('div.progress__percentage').html("".concat(percentage, "%"));
        }
  
        $('div.progress__description', this.element).html(message);
        $('div.progress__label', this.element).html(label);
  
        if (this.updateCallback) {
          this.updateCallback(percentage, message, this);
        }
      },
      startMonitoring: function startMonitoring(uri, delay) {
        this.delay = delay;
        this.uri = uri;
        this.sendPing();
      },
      stopMonitoring: function stopMonitoring() {
        clearTimeout(this.timer);
        this.uri = null;
      },
      sendPing: function sendPing() {
        if (this.timer) {
          clearTimeout(this.timer);
        }
  
        if (this.uri) {
          var pb = this;
          var uri = this.uri;
  
          if (uri.indexOf('?') === -1) {
            uri += '?';
          } else {
            uri += '&';
          }
  
          uri += '_format=json';
          $.ajax({
            type: this.method,
            url: uri,
            data: '',
            dataType: 'json',
            success: function success(progress) {
              if (progress.status === 0) {
                pb.displayError(progress.data);
                return;
              }
  
              pb.setProgress(progress.percentage, progress.message, progress.label);
              pb.timer = setTimeout(function () {
                pb.sendPing();
              }, pb.delay);
            },
            error: function error(xmlhttp) {
              var e = new Drupal.AjaxError(xmlhttp, pb.uri);
              pb.displayError("<pre>".concat(e.message, "</pre>"));
            }
          });
        }
      },
      displayError: function displayError(string) {
        var error = $('<div class="messages messages--error"></div>').html(string);
        $(this.element).before(error).hide();
  
        if (this.errorCallback) {
          this.errorCallback(this);
        }
      }
    });
  })(jQuery, Drupal);;
  /**
  * DO NOT EDIT THIS FILE.
  * See the following change record for more information,
  * https://www.drupal.org/node/2815083
  * @preserve
  **/
  
  (function (Drupal) {
    Drupal.behaviors.responsiveImageAJAX = {
      attach: function attach() {
        if (window.picturefill) {
          window.picturefill();
        }
      }
    };
  })(Drupal);;
  /**
  * DO NOT EDIT THIS FILE.
  * See the following change record for more information,
  * https://www.drupal.org/node/2815083
  * @preserve
  **/
  
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
  
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
  
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
  
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
  
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
  
  (function ($, window, Drupal, drupalSettings, _ref) {
    var isFocusable = _ref.isFocusable,
        tabbable = _ref.tabbable;
    Drupal.behaviors.AJAX = {
      attach: function attach(context, settings) {
        function loadAjaxBehavior(base) {
          var elementSettings = settings.ajax[base];
  
          if (typeof elementSettings.selector === 'undefined') {
            elementSettings.selector = "#".concat(base);
          }
  
          $(elementSettings.selector).once('drupal-ajax').each(function () {
            elementSettings.element = this;
            elementSettings.base = base;
            Drupal.ajax(elementSettings);
          });
        }
  
        Object.keys(settings.ajax || {}).forEach(function (base) {
          return loadAjaxBehavior(base);
        });
        Drupal.ajax.bindAjaxLinks(document.body);
        $('.use-ajax-submit').once('ajax').each(function () {
          var elementSettings = {};
          elementSettings.url = $(this.form).attr('action');
          elementSettings.setClick = true;
          elementSettings.event = 'click';
          elementSettings.progress = {
            type: 'throbber'
          };
          elementSettings.base = $(this).attr('id');
          elementSettings.element = this;
          Drupal.ajax(elementSettings);
        });
      },
      detach: function detach(context, settings, trigger) {
        if (trigger === 'unload') {
          Drupal.ajax.expired().forEach(function (instance) {
            Drupal.ajax.instances[instance.instanceIndex] = null;
          });
        }
      }
    };
  
    Drupal.AjaxError = function (xmlhttp, uri, customMessage) {
      var statusCode;
      var statusText;
      var responseText;
  
      if (xmlhttp.status) {
        statusCode = "\n".concat(Drupal.t('An AJAX HTTP error occurred.'), "\n").concat(Drupal.t('HTTP Result Code: !status', {
          '!status': xmlhttp.status
        }));
      } else {
        statusCode = "\n".concat(Drupal.t('An AJAX HTTP request terminated abnormally.'));
      }
  
      statusCode += "\n".concat(Drupal.t('Debugging information follows.'));
      var pathText = "\n".concat(Drupal.t('Path: !uri', {
        '!uri': uri
      }));
      statusText = '';
  
      try {
        statusText = "\n".concat(Drupal.t('StatusText: !statusText', {
          '!statusText': $.trim(xmlhttp.statusText)
        }));
      } catch (e) {}
  
      responseText = '';
  
      try {
        responseText = "\n".concat(Drupal.t('ResponseText: !responseText', {
          '!responseText': $.trim(xmlhttp.responseText)
        }));
      } catch (e) {}
  
      responseText = responseText.replace(/<("[^"]*"|'[^']*'|[^'">])*>/gi, '');
      responseText = responseText.replace(/[\n]+\s+/g, '\n');
      var readyStateText = xmlhttp.status === 0 ? "\n".concat(Drupal.t('ReadyState: !readyState', {
        '!readyState': xmlhttp.readyState
      })) : '';
      customMessage = customMessage ? "\n".concat(Drupal.t('CustomMessage: !customMessage', {
        '!customMessage': customMessage
      })) : '';
      this.message = statusCode + pathText + statusText + customMessage + responseText + readyStateText;
      this.name = 'AjaxError';
    };
  
    Drupal.AjaxError.prototype = new Error();
    Drupal.AjaxError.prototype.constructor = Drupal.AjaxError;
  
    Drupal.ajax = function (settings) {
      if (arguments.length !== 1) {
        throw new Error('Drupal.ajax() function must be called with one configuration object only');
      }
  
      var base = settings.base || false;
      var element = settings.element || false;
      delete settings.base;
      delete settings.element;
  
      if (!settings.progress && !element) {
        settings.progress = false;
      }
  
      var ajax = new Drupal.Ajax(base, element, settings);
      ajax.instanceIndex = Drupal.ajax.instances.length;
      Drupal.ajax.instances.push(ajax);
      return ajax;
    };
  
    Drupal.ajax.instances = [];
  
    Drupal.ajax.expired = function () {
      return Drupal.ajax.instances.filter(function (instance) {
        return instance && instance.element !== false && !document.body.contains(instance.element);
      });
    };
  
    Drupal.ajax.bindAjaxLinks = function (element) {
      $(element).find('.use-ajax').once('ajax').each(function (i, ajaxLink) {
        var $linkElement = $(ajaxLink);
        var elementSettings = {
          progress: {
            type: 'throbber'
          },
          dialogType: $linkElement.data('dialog-type'),
          dialog: $linkElement.data('dialog-options'),
          dialogRenderer: $linkElement.data('dialog-renderer'),
          base: $linkElement.attr('id'),
          element: ajaxLink
        };
        var href = $linkElement.attr('href');
  
        if (href) {
          elementSettings.url = href;
          elementSettings.event = 'click';
        }
  
        Drupal.ajax(elementSettings);
      });
    };
  
    Drupal.Ajax = function (base, element, elementSettings) {
      var defaults = {
        event: element ? 'mousedown' : null,
        keypress: true,
        selector: base ? "#".concat(base) : null,
        effect: 'none',
        speed: 'none',
        method: 'replaceWith',
        progress: {
          type: 'throbber',
          message: Drupal.t('Please wait...')
        },
        submit: {
          js: true
        }
      };
      $.extend(this, defaults, elementSettings);
      this.commands = new Drupal.AjaxCommands();
      this.instanceIndex = false;
  
      if (this.wrapper) {
        this.wrapper = "#".concat(this.wrapper);
      }
  
      this.element = element;
      this.element_settings = elementSettings;
      this.elementSettings = elementSettings;
  
      if (this.element && this.element.form) {
        this.$form = $(this.element.form);
      }
  
      if (!this.url) {
        var $element = $(this.element);
  
        if ($element.is('a')) {
          this.url = $element.attr('href');
        } else if (this.element && element.form) {
          this.url = this.$form.attr('action');
        }
      }
  
      var originalUrl = this.url;
      this.url = this.url.replace(/\/nojs(\/|$|\?|#)/, '/ajax$1');
  
      if (drupalSettings.ajaxTrustedUrl[originalUrl]) {
        drupalSettings.ajaxTrustedUrl[this.url] = true;
      }
  
      var ajax = this;
      ajax.options = {
        url: ajax.url,
        data: ajax.submit,
        beforeSerialize: function beforeSerialize(elementSettings, options) {
          return ajax.beforeSerialize(elementSettings, options);
        },
        beforeSubmit: function beforeSubmit(formValues, elementSettings, options) {
          ajax.ajaxing = true;
          return ajax.beforeSubmit(formValues, elementSettings, options);
        },
        beforeSend: function beforeSend(xmlhttprequest, options) {
          ajax.ajaxing = true;
          return ajax.beforeSend(xmlhttprequest, options);
        },
        success: function success(response, status, xmlhttprequest) {
          if (typeof response === 'string') {
            response = $.parseJSON(response);
          }
  
          if (response !== null && !drupalSettings.ajaxTrustedUrl[ajax.url]) {
            if (xmlhttprequest.getResponseHeader('X-Drupal-Ajax-Token') !== '1') {
              var customMessage = Drupal.t('The response failed verification so will not be processed.');
              return ajax.error(xmlhttprequest, ajax.url, customMessage);
            }
          }
  
          return ajax.success(response, status);
        },
        complete: function complete(xmlhttprequest, status) {
          ajax.ajaxing = false;
  
          if (status === 'error' || status === 'parsererror') {
            return ajax.error(xmlhttprequest, ajax.url);
          }
        },
        dataType: 'json',
        jsonp: false,
        type: 'POST'
      };
  
      if (elementSettings.dialog) {
        ajax.options.data.dialogOptions = elementSettings.dialog;
      }
  
      if (ajax.options.url.indexOf('?') === -1) {
        ajax.options.url += '?';
      } else {
        ajax.options.url += '&';
      }
  
      var wrapper = "drupal_".concat(elementSettings.dialogType || 'ajax');
  
      if (elementSettings.dialogRenderer) {
        wrapper += ".".concat(elementSettings.dialogRenderer);
      }
  
      ajax.options.url += "".concat(Drupal.ajax.WRAPPER_FORMAT, "=").concat(wrapper);
      $(ajax.element).on(elementSettings.event, function (event) {
        if (!drupalSettings.ajaxTrustedUrl[ajax.url] && !Drupal.url.isLocal(ajax.url)) {
          throw new Error(Drupal.t('The callback URL is not local and not trusted: !url', {
            '!url': ajax.url
          }));
        }
  
        return ajax.eventResponse(this, event);
      });
  
      if (elementSettings.keypress) {
        $(ajax.element).on('keypress', function (event) {
          return ajax.keypressResponse(this, event);
        });
      }
  
      if (elementSettings.prevent) {
        $(ajax.element).on(elementSettings.prevent, false);
      }
    };
  
    Drupal.ajax.WRAPPER_FORMAT = '_wrapper_format';
    Drupal.Ajax.AJAX_REQUEST_PARAMETER = '_drupal_ajax';
  
    Drupal.Ajax.prototype.execute = function () {
      if (this.ajaxing) {
        return;
      }
  
      try {
        this.beforeSerialize(this.element, this.options);
        return $.ajax(this.options);
      } catch (e) {
        this.ajaxing = false;
        window.alert("An error occurred while attempting to process ".concat(this.options.url, ": ").concat(e.message));
        return $.Deferred().reject();
      }
    };
  
    Drupal.Ajax.prototype.keypressResponse = function (element, event) {
      var ajax = this;
  
      if (event.which === 13 || event.which === 32 && element.type !== 'text' && element.type !== 'textarea' && element.type !== 'tel' && element.type !== 'number') {
        event.preventDefault();
        event.stopPropagation();
        $(element).trigger(ajax.elementSettings.event);
      }
    };
  
    Drupal.Ajax.prototype.eventResponse = function (element, event) {
      event.preventDefault();
      event.stopPropagation();
      var ajax = this;
  
      if (ajax.ajaxing) {
        return;
      }
  
      try {
        if (ajax.$form) {
          if (ajax.setClick) {
            element.form.clk = element;
          }
  
          ajax.$form.ajaxSubmit(ajax.options);
        } else {
          ajax.beforeSerialize(ajax.element, ajax.options);
          $.ajax(ajax.options);
        }
      } catch (e) {
        ajax.ajaxing = false;
        window.alert("An error occurred while attempting to process ".concat(ajax.options.url, ": ").concat(e.message));
      }
    };
  
    Drupal.Ajax.prototype.beforeSerialize = function (element, options) {
      if (this.$form && document.body.contains(this.$form.get(0))) {
        var settings = this.settings || drupalSettings;
        Drupal.detachBehaviors(this.$form.get(0), settings, 'serialize');
      }
  
      options.data[Drupal.Ajax.AJAX_REQUEST_PARAMETER] = 1;
      var pageState = drupalSettings.ajaxPageState;
      options.data['ajax_page_state[theme]'] = pageState.theme;
      options.data['ajax_page_state[theme_token]'] = pageState.theme_token;
      options.data['ajax_page_state[libraries]'] = pageState.libraries;
    };
  
    Drupal.Ajax.prototype.beforeSubmit = function (formValues, element, options) {};
  
    Drupal.Ajax.prototype.beforeSend = function (xmlhttprequest, options) {
      if (this.$form) {
        options.extraData = options.extraData || {};
        options.extraData.ajax_iframe_upload = '1';
        var v = $.fieldValue(this.element);
  
        if (v !== null) {
          options.extraData[this.element.name] = v;
        }
      }
  
      $(this.element).prop('disabled', true);
  
      if (!this.progress || !this.progress.type) {
        return;
      }
  
      var progressIndicatorMethod = "setProgressIndicator".concat(this.progress.type.slice(0, 1).toUpperCase()).concat(this.progress.type.slice(1).toLowerCase());
  
      if (progressIndicatorMethod in this && typeof this[progressIndicatorMethod] === 'function') {
        this[progressIndicatorMethod].call(this);
      }
    };
  
    Drupal.theme.ajaxProgressThrobber = function (message) {
      var messageMarkup = typeof message === 'string' ? Drupal.theme('ajaxProgressMessage', message) : '';
      var throbber = '<div class="throbber">&nbsp;</div>';
      return "<div class=\"ajax-progress ajax-progress-throbber\">".concat(throbber).concat(messageMarkup, "</div>");
    };
  
    Drupal.theme.ajaxProgressIndicatorFullscreen = function () {
      return '<div class="ajax-progress ajax-progress-fullscreen">&nbsp;</div>';
    };
  
    Drupal.theme.ajaxProgressMessage = function (message) {
      return "<div class=\"message\">".concat(message, "</div>");
    };
  
    Drupal.theme.ajaxProgressBar = function ($element) {
      return $('<div class="ajax-progress ajax-progress-bar"></div>').append($element);
    };
  
    Drupal.Ajax.prototype.setProgressIndicatorBar = function () {
      var progressBar = new Drupal.ProgressBar("ajax-progress-".concat(this.element.id), $.noop, this.progress.method, $.noop);
  
      if (this.progress.message) {
        progressBar.setProgress(-1, this.progress.message);
      }
  
      if (this.progress.url) {
        progressBar.startMonitoring(this.progress.url, this.progress.interval || 1500);
      }
  
      this.progress.element = $(Drupal.theme('ajaxProgressBar', progressBar.element));
      this.progress.object = progressBar;
      $(this.element).after(this.progress.element);
    };
  
    Drupal.Ajax.prototype.setProgressIndicatorThrobber = function () {
      this.progress.element = $(Drupal.theme('ajaxProgressThrobber', this.progress.message));
      $(this.element).after(this.progress.element);
    };
  
    Drupal.Ajax.prototype.setProgressIndicatorFullscreen = function () {
      this.progress.element = $(Drupal.theme('ajaxProgressIndicatorFullscreen'));
      $('body').append(this.progress.element);
    };
  
    Drupal.Ajax.prototype.success = function (response, status) {
      var _this = this;
  
      if (this.progress.element) {
        $(this.progress.element).remove();
      }
  
      if (this.progress.object) {
        this.progress.object.stopMonitoring();
      }
  
      $(this.element).prop('disabled', false);
      var elementParents = $(this.element).parents('[data-drupal-selector]').addBack().toArray();
      var focusChanged = false;
      Object.keys(response || {}).forEach(function (i) {
        if (response[i].command && _this.commands[response[i].command]) {
          _this.commands[response[i].command](_this, response[i], status);
  
          if (response[i].command === 'invoke' && response[i].method === 'focus' || response[i].command === 'focusFirst') {
            focusChanged = true;
          }
        }
      });
  
      if (!focusChanged && this.element && !$(this.element).data('disable-refocus')) {
        var target = false;
  
        for (var n = elementParents.length - 1; !target && n >= 0; n--) {
          target = document.querySelector("[data-drupal-selector=\"".concat(elementParents[n].getAttribute('data-drupal-selector'), "\"]"));
        }
  
        if (target) {
          $(target).trigger('focus');
        }
      }
  
      if (this.$form && document.body.contains(this.$form.get(0))) {
        var settings = this.settings || drupalSettings;
        Drupal.attachBehaviors(this.$form.get(0), settings);
      }
  
      this.settings = null;
    };
  
    Drupal.Ajax.prototype.getEffect = function (response) {
      var type = response.effect || this.effect;
      var speed = response.speed || this.speed;
      var effect = {};
  
      if (type === 'none') {
        effect.showEffect = 'show';
        effect.hideEffect = 'hide';
        effect.showSpeed = '';
      } else if (type === 'fade') {
        effect.showEffect = 'fadeIn';
        effect.hideEffect = 'fadeOut';
        effect.showSpeed = speed;
      } else {
        effect.showEffect = "".concat(type, "Toggle");
        effect.hideEffect = "".concat(type, "Toggle");
        effect.showSpeed = speed;
      }
  
      return effect;
    };
  
    Drupal.Ajax.prototype.error = function (xmlhttprequest, uri, customMessage) {
      if (this.progress.element) {
        $(this.progress.element).remove();
      }
  
      if (this.progress.object) {
        this.progress.object.stopMonitoring();
      }
  
      $(this.wrapper).show();
      $(this.element).prop('disabled', false);
  
      if (this.$form && document.body.contains(this.$form.get(0))) {
        var settings = this.settings || drupalSettings;
        Drupal.attachBehaviors(this.$form.get(0), settings);
      }
  
      throw new Drupal.AjaxError(xmlhttprequest, uri, customMessage);
    };
  
    Drupal.theme.ajaxWrapperNewContent = function ($newContent, ajax, response) {
      return (response.effect || ajax.effect) !== 'none' && $newContent.filter(function (i) {
        return !($newContent[i].nodeName === '#comment' || $newContent[i].nodeName === '#text' && /^(\s|\n|\r)*$/.test($newContent[i].textContent));
      }).length > 1 ? Drupal.theme('ajaxWrapperMultipleRootElements', $newContent) : $newContent;
    };
  
    Drupal.theme.ajaxWrapperMultipleRootElements = function ($elements) {
      return $('<div></div>').append($elements);
    };
  
    Drupal.AjaxCommands = function () {};
  
    Drupal.AjaxCommands.prototype = {
      insert: function insert(ajax, response) {
        var $wrapper = response.selector ? $(response.selector) : $(ajax.wrapper);
        var method = response.method || ajax.method;
        var effect = ajax.getEffect(response);
        var settings = response.settings || ajax.settings || drupalSettings;
        var $newContent = $($.parseHTML(response.data, document, true));
        $newContent = Drupal.theme('ajaxWrapperNewContent', $newContent, ajax, response);
  
        switch (method) {
          case 'html':
          case 'replaceWith':
          case 'replaceAll':
          case 'empty':
          case 'remove':
            Drupal.detachBehaviors($wrapper.get(0), settings);
            break;
  
          default:
            break;
        }
  
        $wrapper[method]($newContent);
  
        if (effect.showEffect !== 'show') {
          $newContent.hide();
        }
  
        var $ajaxNewContent = $newContent.find('.ajax-new-content');
  
        if ($ajaxNewContent.length) {
          $ajaxNewContent.hide();
          $newContent.show();
          $ajaxNewContent[effect.showEffect](effect.showSpeed);
        } else if (effect.showEffect !== 'show') {
          $newContent[effect.showEffect](effect.showSpeed);
        }
  
        if ($newContent.parents('html').length) {
          $newContent.each(function (index, element) {
            if (element.nodeType === Node.ELEMENT_NODE) {
              Drupal.attachBehaviors(element, settings);
            }
          });
        }
      },
      remove: function remove(ajax, response, status) {
        var settings = response.settings || ajax.settings || drupalSettings;
        $(response.selector).each(function () {
          Drupal.detachBehaviors(this, settings);
        }).remove();
      },
      changed: function changed(ajax, response, status) {
        var $element = $(response.selector);
  
        if (!$element.hasClass('ajax-changed')) {
          $element.addClass('ajax-changed');
  
          if (response.asterisk) {
            $element.find(response.asterisk).append(" <abbr class=\"ajax-changed\" title=\"".concat(Drupal.t('Changed'), "\">*</abbr> "));
          }
        }
      },
      alert: function alert(ajax, response, status) {
        window.alert(response.text);
      },
      announce: function announce(ajax, response) {
        if (response.priority) {
          Drupal.announce(response.text, response.priority);
        } else {
          Drupal.announce(response.text);
        }
      },
      redirect: function redirect(ajax, response, status) {
        window.location = response.url;
      },
      css: function css(ajax, response, status) {
        $(response.selector).css(response.argument);
      },
      settings: function settings(ajax, response, status) {
        var ajaxSettings = drupalSettings.ajax;
  
        if (ajaxSettings) {
          Drupal.ajax.expired().forEach(function (instance) {
            if (instance.selector) {
              var selector = instance.selector.replace('#', '');
  
              if (selector in ajaxSettings) {
                delete ajaxSettings[selector];
              }
            }
          });
        }
  
        if (response.merge) {
          $.extend(true, drupalSettings, response.settings);
        } else {
          ajax.settings = response.settings;
        }
      },
      data: function data(ajax, response, status) {
        $(response.selector).data(response.name, response.value);
      },
      focusFirst: function focusFirst(ajax, response, status) {
        var focusChanged = false;
        var container = document.querySelector(response.selector);
  
        if (container) {
          var tabbableElements = tabbable(container);
  
          if (tabbableElements.length) {
            tabbableElements[0].focus();
            focusChanged = true;
          } else if (isFocusable(container)) {
            container.focus();
            focusChanged = true;
          }
        }
  
        if (ajax.hasOwnProperty('element') && !focusChanged) {
          ajax.element.focus();
        }
      },
      invoke: function invoke(ajax, response, status) {
        var $element = $(response.selector);
        $element[response.method].apply($element, _toConsumableArray(response.args));
      },
      restripe: function restripe(ajax, response, status) {
        $(response.selector).find('> tbody > tr:visible, > tr:visible').removeClass('odd even').filter(':even').addClass('odd').end().filter(':odd').addClass('even');
      },
      update_build_id: function update_build_id(ajax, response, status) {
        $("input[name=\"form_build_id\"][value=\"".concat(response.old, "\"]")).val(response.new);
      },
      add_css: function add_css(ajax, response, status) {
        $('head').prepend(response.data);
      },
      message: function message(ajax, response) {
        var messages = new Drupal.Message(document.querySelector(response.messageWrapperQuerySelector));
  
        if (response.clearPrevious) {
          messages.clear();
        }
  
        messages.add(response.message, response.messageOptions);
      }
    };
  })(jQuery, window, Drupal, drupalSettings, window.tabbable);;
  /**
  * DO NOT EDIT THIS FILE.
  * See the following change record for more information,
  * https://www.drupal.org/node/2815083
  * @preserve
  **/
  
  (function (Drupal) {
    Drupal.theme.ajaxProgressIndicatorFullscreen = function () {
      return '<div class="ajax-progress ajax-progress--fullscreen"><div class="ajax-progress__throbber ajax-progress__throbber--fullscreen">&nbsp;</div></div>';
    };
  
    Drupal.theme.ajaxProgressThrobber = function (message) {
      var messageMarkup = typeof message === 'string' ? Drupal.theme('ajaxProgressMessage', message) : '';
      var throbber = '<div class="ajax-progress__throbber">&nbsp;</div>';
      return "<div class=\"ajax-progress ajax-progress--throbber\">".concat(throbber).concat(messageMarkup, "</div>");
    };
  
    Drupal.theme.ajaxProgressMessage = function (message) {
      return "<div class=\"ajax-progress__message\">".concat(message, "</div>");
    };
  })(Drupal);;
  /**
  * DO NOT EDIT THIS FILE.
  * See the following change record for more information,
  * https://www.drupal.org/node/2815083
  * @preserve
  **/
  
  Drupal.debounce = function (func, wait, immediate) {
    var timeout;
    var result;
    return function () {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }
  
      var context = this;
  
      var later = function later() {
        timeout = null;
  
        if (!immediate) {
          result = func.apply(context, args);
        }
      };
  
      var callNow = immediate && !timeout;
      clearTimeout(timeout);
      timeout = setTimeout(later, wait);
  
      if (callNow) {
        result = func.apply(context, args);
      }
  
      return result;
    };
  };;
  /**
  * DO NOT EDIT THIS FILE.
  * See the following change record for more information,
  * https://www.drupal.org/node/2815083
  * @preserve
  **/
  
  (function (Drupal, debounce) {
    var liveElement;
    var announcements = [];
    Drupal.behaviors.drupalAnnounce = {
      attach: function attach(context) {
        if (!liveElement) {
          liveElement = document.createElement('div');
          liveElement.id = 'drupal-live-announce';
          liveElement.className = 'visually-hidden';
          liveElement.setAttribute('aria-live', 'polite');
          liveElement.setAttribute('aria-busy', 'false');
          document.body.appendChild(liveElement);
        }
      }
    };
  
    function announce() {
      var text = [];
      var priority = 'polite';
      var announcement;
      var il = announcements.length;
  
      for (var i = 0; i < il; i++) {
        announcement = announcements.pop();
        text.unshift(announcement.text);
  
        if (announcement.priority === 'assertive') {
          priority = 'assertive';
        }
      }
  
      if (text.length) {
        liveElement.innerHTML = '';
        liveElement.setAttribute('aria-busy', 'true');
        liveElement.setAttribute('aria-live', priority);
        liveElement.innerHTML = text.join('\n');
        liveElement.setAttribute('aria-busy', 'false');
      }
    }
  
    Drupal.announce = function (text, priority) {
      announcements.push({
        text: text,
        priority: priority
      });
      return debounce(announce, 200)();
    };
  })(Drupal, Drupal.debounce);;
  /**
  * DO NOT EDIT THIS FILE.
  * See the following change record for more information,
  * https://www.drupal.org/node/2815083
  * @preserve
  **/
  
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
  
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
  
  (function (Drupal) {
    Drupal.Message = function () {
      function _class() {
        var messageWrapper = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
  
        _classCallCheck(this, _class);
  
        if (!messageWrapper) {
          this.messageWrapper = Drupal.Message.defaultWrapper();
        } else {
          this.messageWrapper = messageWrapper;
        }
      }
  
      _createClass(_class, [{
        key: "add",
        value: function add(message) {
          var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  
          if (!options.hasOwnProperty('type')) {
            options.type = 'status';
          }
  
          if (typeof message !== 'string') {
            throw new Error('Message must be a string.');
          }
  
          Drupal.Message.announce(message, options);
          options.id = options.id ? String(options.id) : "".concat(options.type, "-").concat(Math.random().toFixed(15).replace('0.', ''));
  
          if (!Drupal.Message.getMessageTypeLabels().hasOwnProperty(options.type)) {
            var type = options.type;
            throw new Error("The message type, ".concat(type, ", is not present in Drupal.Message.getMessageTypeLabels()."));
          }
  
          this.messageWrapper.appendChild(Drupal.theme('message', {
            text: message
          }, options));
          return options.id;
        }
      }, {
        key: "select",
        value: function select(id) {
          return this.messageWrapper.querySelector("[data-drupal-message-id^=\"".concat(id, "\"]"));
        }
      }, {
        key: "remove",
        value: function remove(id) {
          return this.messageWrapper.removeChild(this.select(id));
        }
      }, {
        key: "clear",
        value: function clear() {
          var _this = this;
  
          Array.prototype.forEach.call(this.messageWrapper.querySelectorAll('[data-drupal-message-id]'), function (message) {
            _this.messageWrapper.removeChild(message);
          });
        }
      }], [{
        key: "defaultWrapper",
        value: function defaultWrapper() {
          var wrapper = document.querySelector('[data-drupal-messages]');
  
          if (!wrapper) {
            wrapper = document.querySelector('[data-drupal-messages-fallback]');
            wrapper.removeAttribute('data-drupal-messages-fallback');
            wrapper.setAttribute('data-drupal-messages', '');
            wrapper.classList.remove('hidden');
          }
  
          return wrapper.innerHTML === '' ? Drupal.Message.messageInternalWrapper(wrapper) : wrapper.firstElementChild;
        }
      }, {
        key: "getMessageTypeLabels",
        value: function getMessageTypeLabels() {
          return {
            status: Drupal.t('Status message'),
            error: Drupal.t('Error message'),
            warning: Drupal.t('Warning message')
          };
        }
      }, {
        key: "announce",
        value: function announce(message, options) {
          if (!options.priority && (options.type === 'warning' || options.type === 'error')) {
            options.priority = 'assertive';
          }
  
          if (options.announce !== '') {
            Drupal.announce(options.announce || message, options.priority);
          }
        }
      }, {
        key: "messageInternalWrapper",
        value: function messageInternalWrapper(messageWrapper) {
          var innerWrapper = document.createElement('div');
          innerWrapper.setAttribute('class', 'messages__wrapper');
          messageWrapper.insertAdjacentElement('afterbegin', innerWrapper);
          return innerWrapper;
        }
      }]);
  
      return _class;
    }();
  
    Drupal.theme.message = function (_ref, _ref2) {
      var text = _ref.text;
      var type = _ref2.type,
          id = _ref2.id;
      var messagesTypes = Drupal.Message.getMessageTypeLabels();
      var messageWrapper = document.createElement('div');
      messageWrapper.setAttribute('class', "messages messages--".concat(type));
      messageWrapper.setAttribute('role', type === 'error' || type === 'warning' ? 'alert' : 'status');
      messageWrapper.setAttribute('data-drupal-message-id', id);
      messageWrapper.setAttribute('data-drupal-message-type', type);
      messageWrapper.setAttribute('aria-label', messagesTypes[type]);
      messageWrapper.innerHTML = "".concat(text);
      return messageWrapper;
    };
  })(Drupal);;
  /**
  * DO NOT EDIT THIS FILE.
  * See the following change record for more information,
  * https://www.drupal.org/node/2815083
  * @preserve
  **/
  
  (function (Drupal) {
    Drupal.theme.message = function (_ref, _ref2) {
      var text = _ref.text;
      var type = _ref2.type,
          id = _ref2.id;
      var messagesTypes = Drupal.Message.getMessageTypeLabels();
      var messageWrapper = document.createElement('div');
      messageWrapper.setAttribute('class', "messages messages--".concat(type));
      messageWrapper.setAttribute('role', type === 'error' || type === 'warning' ? 'alert' : 'status');
      messageWrapper.setAttribute('aria-labelledby', "".concat(id, "-title"));
      messageWrapper.setAttribute('data-drupal-message-id', id);
      messageWrapper.setAttribute('data-drupal-message-type', type);
      messageWrapper.innerHTML = "\n    <div class=\"messages__header\">\n      <h2 id=\"".concat(id, "-title\" class=\"messages__title\">\n        ").concat(messagesTypes[type], "\n      </h2>\n    </div>\n    <div class=\"messages__content\">\n      ").concat(text, "\n    </div>\n  ");
      return messageWrapper;
    };
  })(Drupal);;
  !function($, Drupal, drupalSettings) {
    Drupal.behaviors.ginCKEditorContextMenu = {
      attach: function() {
        if (window.CKEDITOR && void 0 !== CKEDITOR) {
          if (drupalSettings.path.currentPath.indexOf("admin/config/content/formats/manage") > -1) return;
          var accentCss = drupalSettings.gin.accent_css_path, contentsCss = drupalSettings.gin.ckeditor_css_path, accentColorPreset = drupalSettings.gin.preset_accent_color, ginClasses = new Array;
          drupalSettings.gin.darkmode && ginClasses.push(drupalSettings.gin.darkmode_class), 
          drupalSettings.gin.highcontrastmode && ginClasses.push(drupalSettings.gin.highcontrastmode_class), 
          void 0 === CKEDITOR.config.contextmenu_contentsCss && (CKEDITOR.config.contextmenu_contentsCss = new Array, 
          CKEDITOR.config.contextmenu_contentsCss.push(CKEDITOR.skin.getPath("editor")), CKEDITOR.config.contextmenu_contentsCss.push(accentCss), 
          CKEDITOR.config.contextmenu_contentsCss.push(contentsCss)), CKEDITOR.on("instanceReady", (function() {
            $(".cke_wysiwyg_frame").contents().find("body").addClass(ginClasses).attr("data-gin-accent", accentColorPreset);
          })), new MutationObserver((function() {
            $("body > .cke_menu_panel > iframe").contents().find("body").addClass(ginClasses).attr("data-gin-accent", accentColorPreset);
          })).observe(document.body, {
            childList: !0
          });
        }
      }
    };
  }(jQuery, Drupal, drupalSettings);;
  /**
  * DO NOT EDIT THIS FILE.
  * See the following change record for more information,
  * https://www.drupal.org/node/2815083
  * @preserve
  **/
  
  (function (Drupal, drupalSettings) {
    Drupal.behaviors.activeLinks = {
      attach: function attach(context) {
        var path = drupalSettings.path;
        var queryString = JSON.stringify(path.currentQuery);
        var querySelector = path.currentQuery ? "[data-drupal-link-query='".concat(queryString, "']") : ':not([data-drupal-link-query])';
        var originalSelectors = ["[data-drupal-link-system-path=\"".concat(path.currentPath, "\"]")];
        var selectors;
  
        if (path.isFront) {
          originalSelectors.push('[data-drupal-link-system-path="<front>"]');
        }
  
        selectors = [].concat(originalSelectors.map(function (selector) {
          return "".concat(selector, ":not([hreflang])");
        }), originalSelectors.map(function (selector) {
          return "".concat(selector, "[hreflang=\"").concat(path.currentLanguage, "\"]");
        }));
        selectors = selectors.map(function (current) {
          return current + querySelector;
        });
        var activeLinks = context.querySelectorAll(selectors.join(','));
        var il = activeLinks.length;
  
        for (var i = 0; i < il; i++) {
          activeLinks[i].classList.add('is-active');
        }
      },
      detach: function detach(context, settings, trigger) {
        if (trigger === 'unload') {
          var activeLinks = context.querySelectorAll('[data-drupal-link-system-path].is-active');
          var il = activeLinks.length;
  
          for (var i = 0; i < il; i++) {
            activeLinks[i].classList.remove('is-active');
          }
        }
      }
    };
  })(Drupal, drupalSettings);;
  /**
   * @file
   * JavaScript behavior to remove destination from contextual links.
   */
  
  (function ($) {
  
    'use strict';
  
    // Bind click event to all .contextual links which are
    // dynamically inserted via Ajax.
    // @see webform_contextual_links_view_alter()
    // @see Drupal.behaviors.contextual
    $(document).on('click', '.contextual', function () {
      $(this).find('a.webform-contextual').once('webform-contextual').each(function () {
        this.href = this.href.split('?')[0];
  
        // Add ?_webform_test={webform} to the current page's URL.
        if (/webform\/([^/]+)\/test$/.test(this.href)) {
          this.href = window.location.pathname + '?_webform_test=' + RegExp.$1;
        }
      });
    });
  
  })(jQuery);
  ;
  /**
   * @file
   * JavaScript behaviors for details element.
   */
  
  (function ($, Drupal) {
  
    'use strict';
  
    // Determine if local storage exists and is enabled.
    // This approach is copied from Modernizr.
    // @see https://github.com/Modernizr/Modernizr/blob/c56fb8b09515f629806ca44742932902ac145302/modernizr.js#L696-731
    var hasLocalStorage = (function () {
      try {
        localStorage.setItem('webform', 'webform');
        localStorage.removeItem('webform');
        return true;
      }
      catch (e) {
        return false;
      }
    }());
  
    /**
     * Attach handler to save details open/close state.
     *
     * @type {Drupal~behavior}
     */
    Drupal.behaviors.webformDetailsSave = {
      attach: function (context) {
        if (!hasLocalStorage) {
          return;
        }
  
        // Summary click event handler.
        $('details > summary', context).once('webform-details-summary-save').on('click', function () {
          var $details = $(this).parent();
  
          // @see https://css-tricks.com/snippets/jquery/make-an-jquery-hasattr/
          if ($details[0].hasAttribute('data-webform-details-nosave')) {
            return;
          }
  
          var name = Drupal.webformDetailsSaveGetName($details);
          if (!name) {
            return;
          }
  
          var open = ($details.attr('open') !== 'open') ? '1' : '0';
          localStorage.setItem(name, open);
        });
  
        // Initialize details open state via local storage.
        $('details', context).once('webform-details-save').each(function () {
          var $details = $(this);
  
          var name = Drupal.webformDetailsSaveGetName($details);
          if (!name) {
            return;
          }
  
          var open = localStorage.getItem(name);
          if (open === null) {
            return;
          }
  
          if (open === '1') {
            $details.attr('open', 'open');
          }
          else {
            $details.removeAttr('open');
          }
        });
      }
  
    };
  
    /**
     * Get the name used to store the state of details element.
     *
     * @param {jQuery} $details
     *   A details element.
     *
     * @return {string}
     *   The name used to store the state of details element.
     */
    Drupal.webformDetailsSaveGetName = function ($details) {
      if (!hasLocalStorage) {
        return '';
      }
  
      // Ignore details that are vertical tabs pane.
      if ($details.hasClass('vertical-tabs__pane')) {
        return '';
      }
  
      // Any details element not included a webform must have define its own id.
      var webformId = $details.attr('data-webform-element-id');
      if (webformId) {
        return 'Drupal.webform.' + webformId.replace('--', '.');
      }
  
      var detailsId = $details.attr('id');
      if (!detailsId) {
        return '';
      }
  
      var $form = $details.parents('form');
      if (!$form.length || !$form.attr('id')) {
        return '';
      }
  
      var formId = $form.attr('id');
      if (!formId) {
        return '';
      }
  
      // ISSUE: When Drupal renders a webform in a modal dialog it appends a unique
      // identifier to webform ids and details ids. (i.e. my-form--FeSFISegTUI)
      // WORKAROUND: Remove the unique id that delimited using double dashes.
      formId = formId.replace(/--.+?$/, '').replace(/-/g, '_');
      detailsId = detailsId.replace(/--.+?$/, '').replace(/-/g, '_');
      return 'Drupal.webform.' + formId + '.' + detailsId;
    };
  
  })(jQuery, Drupal);
  ;
  /**
   * @file
   * JavaScript behaviors for message element integration.
   */
  
  (function ($, Drupal) {
  
    'use strict';
  
    // Determine if local storage exists and is enabled.
    // This approach is copied from Modernizr.
    // @see https://github.com/Modernizr/Modernizr/blob/c56fb8b09515f629806ca44742932902ac145302/modernizr.js#L696-731
    var hasLocalStorage = (function () {
      try {
        localStorage.setItem('webform', 'webform');
        localStorage.removeItem('webform');
        return true;
      }
      catch (e) {
        return false;
      }
    }());
  
    // Determine if session storage exists and is enabled.
    // This approach is copied from Modernizr.
    // @see https://github.com/Modernizr/Modernizr/blob/c56fb8b09515f629806ca44742932902ac145302/modernizr.js#L696-731
    var hasSessionStorage = (function () {
      try {
        sessionStorage.setItem('webform', 'webform');
        sessionStorage.removeItem('webform');
        return true;
      }
      catch (e) {
        return false;
      }
    }());
  
    /**
     * Behavior for handler message close.
     *
     * @type {Drupal~behavior}
     */
    Drupal.behaviors.webformMessageClose = {
      attach: function (context) {
        $(context).find('.js-webform-message--close').once('webform-message--close').each(function () {
          var $element = $(this);
  
          var id = $element.attr('data-message-id');
          var storage = $element.attr('data-message-storage');
          var effect = $element.attr('data-message-close-effect') || 'hide';
          switch (effect) {
            case 'slide': effect = 'slideUp'; break;
  
            case 'fade': effect = 'fadeOut'; break;
          }
  
          // Check storage status.
          if (isClosed($element, storage, id)) {
            return;
          }
  
          // Only show element if it's style is not set to 'display: none'.
          if ($element.attr('style') !== 'display: none;') {
            $element.show();
          }
  
          $element.find('.js-webform-message__link').on('click', function (event) {
            $element[effect]();
            setClosed($element, storage, id);
            $element.trigger('close');
            event.preventDefault();
          });
        });
      }
    };
  
    function isClosed($element, storage, id) {
      if (!id || !storage) {
        return false;
      }
  
      switch (storage) {
        case 'local':
          if (hasLocalStorage) {
            return localStorage.getItem('Drupal.webform.message.' + id) || false;
          }
          return false;
  
        case 'session':
          if (hasSessionStorage) {
            return sessionStorage.getItem('Drupal.webform.message.' + id) || false;
          }
          return false;
  
        default:
          return false;
      }
    }
  
    function setClosed($element, storage, id) {
      if (!id || !storage) {
        return;
      }
  
      switch (storage) {
        case 'local':
          if (hasLocalStorage) {
            localStorage.setItem('Drupal.webform.message.' + id, true);
          }
          break;
  
        case 'session':
          if (hasSessionStorage) {
            sessionStorage.setItem('Drupal.webform.message.' + id, true);
          }
          break;
  
        case 'user':
        case 'state':
        case 'custom':
          $.get($element.find('.js-webform-message__link').attr('href'));
          return true;
      }
    }
  
  })(jQuery, Drupal);
  ;
  !function($, Drupal, drupalSettings) {
    Drupal.behaviors.ginToolbarToggle = {
      attach: function(context) {
        "true" === localStorage.getItem("GinSidebarOpen") ? ($("body").attr("data-toolbar-menu", "open"), 
        $(".toolbar-menu__trigger").addClass("is-active")) : ($("body").attr("data-toolbar-menu", ""), 
        $(".toolbar-menu__trigger").removeClass("is-active")), $(".toolbar-menu__trigger", context).on("click", (function(e) {
          e.preventDefault(), $(this).toggleClass("is-active");
          var active = "true";
          $(this).hasClass("is-active") ? $("body").attr("data-toolbar-menu", "open") : ($("body").attr("data-toolbar-menu", ""), 
          active = "false", $(".gin-toolbar-inline-styles").remove()), localStorage.setItem("GinSidebarOpen", active);
          var event = new CustomEvent("toolbar-toggle", {
            detail: "true" === active
          });
          document.dispatchEvent(event);
        })), $("#toolbar-bar .toolbar-item", context).on("click", (function() {
          $("body").attr("data-toolbar-tray", $(this).data("toolbar-tray")), $(document).ready((function() {
            $(".sticky-header").each((function() {
              $(this).width($(".sticky-table").width());
            }));
          }));
        }));
      }
    };
  }(jQuery, Drupal, drupalSettings);;
  !function($, Drupal, drupalSettings) {
    Drupal.behaviors.ginAccent = {
      attach: function() {
        var path = drupalSettings.path.currentPath;
        if (Drupal.behaviors.ginAccent.setFocusColor(), -1 !== path.indexOf("user/login") || -1 !== path.indexOf("user/password") || -1 !== path.indexOf("user/register") || localStorage.getItem("GinAccentColorCustom")) Drupal.behaviors.ginAccent.setAccentColor(); else if (Drupal.behaviors.ginAccent.setAccentColor(), 
        "custom" === drupalSettings.gin.preset_accent_color) {
          var accentColorSetting = drupalSettings.gin.accent_color;
          localStorage.setItem("GinAccentColorCustom", accentColorSetting);
        } else localStorage.setItem("GinAccentColorCustom", "");
      },
      setAccentColor: function() {
        var preset = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null, color = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null, accentColorPreset = null != preset ? preset : drupalSettings.gin.preset_accent_color;
        "custom" === accentColorPreset ? ($("body").attr("data-gin-accent", preset), Drupal.behaviors.ginAccent.setCustomAccentColor("custom", color)) : $("body").attr("data-gin-accent", accentColorPreset);
      },
      setCustomAccentColor: function() {
        var preset = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null, color = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null, accentColorSetting = null != color ? color : drupalSettings.gin.accent_color;
        if ("custom" === preset) {
          $("body").attr("data-gin-accent", preset);
          var darkmode = null != preset ? $('input[name="enable_darkmode"]').is(":checked") : drupalSettings.gin.darkmode, ratio = (drupalSettings.gin.darkmode_class, 
          darkmode ? 10 : 6.5), accentColor = accentColorSetting;
          if (accentColor) {
            Drupal.behaviors.ginAccent.clearAccentColor();
            var strippedAccentColor = accentColor.replace("#", ""), styles = '<style class="gin-custom-colors">            body:not(.gin-inactive) {\n              --colorGinPrimary: '.concat(accentColor, ";\n              --colorGinPrimaryHover: ").concat(Drupal.behaviors.ginAccent.shadeColor(accentColor, -10), ";\n              --colorGinPrimaryActive: ").concat(Drupal.behaviors.ginAccent.shadeColor(accentColor, -15), ";\n              --colorGinPrimaryLight: ").concat(accentColor).concat(Math.round(3.5 * ratio), ";\n              --colorGinPrimaryLightHover: ").concat(accentColor).concat(Math.round(4.5 * ratio), ";\n              --colorGinPrimaryLightActive: ").concat(accentColor).concat(Math.round(5.5 * ratio), ";\n              --colorGinPrimaryLightShadow: ").concat(accentColor).concat(Math.round(10 * ratio), ";\n              --colorGinItemHover: ").concat(accentColor).concat(Math.round(1.5 * ratio), ";\n            }\n            .form-element--type-select:hover,\n            .form-element--type-select:active,\n            .form-element--type-select:focus {\n              background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 9'%3E%3Cpath fill='none' stroke-width='1.5' d='M1 1L7 7L13 1' stroke='%23").concat(strippedAccentColor, "'/%3E%3C/svg%3E%0A\");\n            }\n            </style>");
            $("body").append(styles);
          }
        }
      },
      clearAccentColor: function() {
        $(".gin-custom-colors").remove();
      },
      shadeColor: function(color, percent) {
        var num = parseInt(color.replace("#", ""), 16), amt = Math.round(2.55 * percent), R = (num >> 16) + amt, B = (num >> 8 & 255) + amt, G = (255 & num) + amt;
        return "#".concat((16777216 + 65536 * (R < 255 ? R < 1 ? 0 : R : 255) + 256 * (B < 255 ? B < 1 ? 0 : B : 255) + (G < 255 ? G < 1 ? 0 : G : 255)).toString(16).slice(1));
      },
      setFocusColor: function() {
        var preset = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null, color = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null, focusColorPreset = null != preset ? preset : drupalSettings.gin.preset_focus_color, focusColorSetting = null != color ? color : drupalSettings.gin.focus_color;
        if (Drupal.behaviors.ginAccent.clearFocusColor(), "gin" !== focusColorPreset) {
          var setColor;
          switch (focusColorPreset) {
           default:
           case "claro":
            setColor = "#26a769";
            break;
  
           case "green":
            setColor = "#08a390";
            break;
  
           case "orange":
            setColor = "#ec7c57";
            break;
  
           case "dark":
            setColor = "#5c5a67";
            break;
  
           case "accent":
            setColor = "var(--colorGinPrimary)";
            break;
  
           case "custom":
            setColor = focusColorSetting;
          }
          $("body").css("--colorGinFocus", setColor);
        }
      },
      clearFocusColor: function() {
        $("body").css("--colorGinFocus", "");
      }
    };
  }(jQuery, Drupal, drupalSettings);;
  /**
   * @file
   * JavaScript behaviors for details element.
   */
  
  (function ($, Drupal) {
  
    'use strict';
  
    Drupal.webform = Drupal.webform || {};
    Drupal.webform.detailsToggle = Drupal.webform.detailsToggle || {};
    Drupal.webform.detailsToggle.options = Drupal.webform.detailsToggle.options || {};
  
    /**
     * Attach handler to toggle details open/close state.
     *
     * @type {Drupal~behavior}
     */
    Drupal.behaviors.webformDetailsToggle = {
      attach: function (context) {
        $('.js-webform-details-toggle', context).once('webform-details-toggle').each(function () {
          var $form = $(this);
          var $tabs = $form.find('.webform-tabs');
  
          // Get only the main details elements and ignore all nested details.
          var selector = ($tabs.length) ? '.webform-tab' : '.js-webform-details-toggle, .webform-elements';
          var $details = $form.find('details').filter(function () {
            var $parents = $(this).parentsUntil(selector);
            return ($parents.find('details').length === 0);
          });
  
          // Toggle is only useful when there are two or more details elements.
          if ($details.length < 2) {
            return;
          }
  
          var options = $.extend({
            button: '<button type="button" class="webform-details-toggle-state"></button>'
          }, Drupal.webform.detailsToggle.options);
  
          // Create toggle buttons.
          var $toggle = $(options.button)
            .attr('title', Drupal.t('Toggle details widget state.'))
            .on('click', function (e) {
              // Get details that are not vertical tabs pane.
              var $details = $form.find('details:not(.vertical-tabs__pane)');
              var open;
              if (Drupal.webform.detailsToggle.isFormDetailsOpen($form)) {
                $details.removeAttr('open');
                open = 0;
              }
              else {
                $details.attr('open', 'open');
                open = 1;
              }
              Drupal.webform.detailsToggle.setDetailsToggleLabel($form);
  
              // Set the saved states for all the details elements.
              // @see webform.element.details.save.js
              if (Drupal.webformDetailsSaveGetName) {
                $details.each(function () {
                  // Note: Drupal.webformDetailsSaveGetName checks if localStorage
                  // exists and is enabled.
                  // @see webform.element.details.save.js
                  var name = Drupal.webformDetailsSaveGetName($(this));
                  if (name) {
                    localStorage.setItem(name, open);
                  }
                });
              }
            })
            .wrap('<div class="webform-details-toggle-state-wrapper"></div>')
            .parent();
  
          if ($tabs.length) {
            // Add toggle state before the tabs.
            $tabs.find('.item-list:first-child').eq(0).before($toggle);
          }
          else {
            // Add toggle state link to first details element.
            $details.eq(0).before($toggle);
          }
  
          Drupal.webform.detailsToggle.setDetailsToggleLabel($form);
        });
      }
    };
  
    /**
     * Determine if a webform's details are all opened.
     *
     * @param {jQuery} $form
     *   A webform.
     *
     * @return {boolean}
     *   TRUE if a webform's details are all opened.
     */
    Drupal.webform.detailsToggle.isFormDetailsOpen = function ($form) {
      return ($form.find('details[open]').length === $form.find('details').length);
    };
  
    /**
     * Set a webform's details toggle state widget label.
     *
     * @param {jQuery} $form
     *   A webform.
     */
    Drupal.webform.detailsToggle.setDetailsToggleLabel = function ($form) {
      var isOpen = Drupal.webform.detailsToggle.isFormDetailsOpen($form);
  
      var label = (isOpen) ? Drupal.t('Collapse all') : Drupal.t('Expand all');
      $form.find('.webform-details-toggle-state').html(label);
  
      var text = (isOpen) ? Drupal.t('All details have been expanded.') : Drupal.t('All details have been collapsed.');
      Drupal.announce(text);
    };
  
  })(jQuery, Drupal);
  ;
  /**
  * DO NOT EDIT THIS FILE.
  * See the following change record for more information,
  * https://www.drupal.org/node/2815083
  * @preserve
  **/
  
  (function ($, Drupal, debounce) {
    $.fn.drupalGetSummary = function () {
      var callback = this.data('summaryCallback');
      return this[0] && callback ? $.trim(callback(this[0])) : '';
    };
  
    $.fn.drupalSetSummary = function (callback) {
      var self = this;
  
      if (typeof callback !== 'function') {
        var val = callback;
  
        callback = function callback() {
          return val;
        };
      }
  
      return this.data('summaryCallback', callback).off('formUpdated.summary').on('formUpdated.summary', function () {
        self.trigger('summaryUpdated');
      }).trigger('summaryUpdated');
    };
  
    Drupal.behaviors.formSingleSubmit = {
      attach: function attach() {
        function onFormSubmit(e) {
          var $form = $(e.currentTarget);
          var formValues = $form.serialize();
          var previousValues = $form.attr('data-drupal-form-submit-last');
  
          if (previousValues === formValues) {
            e.preventDefault();
          } else {
            $form.attr('data-drupal-form-submit-last', formValues);
          }
        }
  
        $('body').once('form-single-submit').on('submit.singleSubmit', 'form:not([method~="GET"])', onFormSubmit);
      }
    };
  
    function triggerFormUpdated(element) {
      $(element).trigger('formUpdated');
    }
  
    function fieldsList(form) {
      var $fieldList = $(form).find('[name]').map(function (index, element) {
        return element.getAttribute('id');
      });
      return $.makeArray($fieldList);
    }
  
    Drupal.behaviors.formUpdated = {
      attach: function attach(context) {
        var $context = $(context);
        var contextIsForm = $context.is('form');
        var $forms = (contextIsForm ? $context : $context.find('form')).once('form-updated');
        var formFields;
  
        if ($forms.length) {
          $.makeArray($forms).forEach(function (form) {
            var events = 'change.formUpdated input.formUpdated ';
            var eventHandler = debounce(function (event) {
              triggerFormUpdated(event.target);
            }, 300);
            formFields = fieldsList(form).join(',');
            form.setAttribute('data-drupal-form-fields', formFields);
            $(form).on(events, eventHandler);
          });
        }
  
        if (contextIsForm) {
          formFields = fieldsList(context).join(',');
          var currentFields = $(context).attr('data-drupal-form-fields');
  
          if (formFields !== currentFields) {
            triggerFormUpdated(context);
          }
        }
      },
      detach: function detach(context, settings, trigger) {
        var $context = $(context);
        var contextIsForm = $context.is('form');
  
        if (trigger === 'unload') {
          var $forms = (contextIsForm ? $context : $context.find('form')).removeOnce('form-updated');
  
          if ($forms.length) {
            $.makeArray($forms).forEach(function (form) {
              form.removeAttribute('data-drupal-form-fields');
              $(form).off('.formUpdated');
            });
          }
        }
      }
    };
    Drupal.behaviors.fillUserInfoFromBrowser = {
      attach: function attach(context, settings) {
        var userInfo = ['name', 'mail', 'homepage'];
        var $forms = $('[data-user-info-from-browser]').once('user-info-from-browser');
  
        if ($forms.length) {
          userInfo.forEach(function (info) {
            var $element = $forms.find("[name=".concat(info, "]"));
            var browserData = localStorage.getItem("Drupal.visitor.".concat(info));
            var emptyOrDefault = $element.val() === '' || $element.attr('data-drupal-default-value') === $element.val();
  
            if ($element.length && emptyOrDefault && browserData) {
              $element.val(browserData);
            }
          });
        }
  
        $forms.on('submit', function () {
          userInfo.forEach(function (info) {
            var $element = $forms.find("[name=".concat(info, "]"));
  
            if ($element.length) {
              localStorage.setItem("Drupal.visitor.".concat(info), $element.val());
            }
          });
        });
      }
    };
  
    var handleFragmentLinkClickOrHashChange = function handleFragmentLinkClickOrHashChange(e) {
      var url;
  
      if (e.type === 'click') {
        url = e.currentTarget.location ? e.currentTarget.location : e.currentTarget;
      } else {
        url = window.location;
      }
  
      var hash = url.hash.substr(1);
  
      if (hash) {
        var $target = $("#".concat(hash));
        $('body').trigger('formFragmentLinkClickOrHashChange', [$target]);
        setTimeout(function () {
          return $target.trigger('focus');
        }, 300);
      }
    };
  
    var debouncedHandleFragmentLinkClickOrHashChange = debounce(handleFragmentLinkClickOrHashChange, 300, true);
    $(window).on('hashchange.form-fragment', debouncedHandleFragmentLinkClickOrHashChange);
    $(document).on('click.form-fragment', 'a[href*="#"]', debouncedHandleFragmentLinkClickOrHashChange);
  })(jQuery, Drupal, Drupal.debounce);;
  /**
  * DO NOT EDIT THIS FILE.
  * See the following change record for more information,
  * https://www.drupal.org/node/2815083
  * @preserve
  **/
  
  (function ($, Drupal) {
    function DetailsSummarizedContent(node) {
      this.$node = $(node);
      this.setupSummary();
    }
  
    $.extend(DetailsSummarizedContent, {
      instances: []
    });
    $.extend(DetailsSummarizedContent.prototype, {
      setupSummary: function setupSummary() {
        this.$detailsSummarizedContentWrapper = $(Drupal.theme('detailsSummarizedContentWrapper'));
        this.$node.on('summaryUpdated', $.proxy(this.onSummaryUpdated, this)).trigger('summaryUpdated').find('> summary').append(this.$detailsSummarizedContentWrapper);
      },
      onSummaryUpdated: function onSummaryUpdated() {
        var text = $.trim(this.$node.drupalGetSummary());
        this.$detailsSummarizedContentWrapper.html(Drupal.theme('detailsSummarizedContentText', text));
      }
    });
    Drupal.behaviors.detailsSummary = {
      attach: function attach(context) {
        var $detailsElements = $(context).find('details').once('details');
        DetailsSummarizedContent.instances = DetailsSummarizedContent.instances.concat($detailsElements.map(function (index, details) {
          return new DetailsSummarizedContent(details);
        }).get());
      }
    };
    Drupal.DetailsSummarizedContent = DetailsSummarizedContent;
  
    Drupal.theme.detailsSummarizedContentWrapper = function () {
      return "<span class=\"summary\"></span>";
    };
  
    Drupal.theme.detailsSummarizedContentText = function (text) {
      return text ? " (".concat(text, ")") : '';
    };
  })(jQuery, Drupal);;
  /**
  * DO NOT EDIT THIS FILE.
  * See the following change record for more information,
  * https://www.drupal.org/node/2815083
  * @preserve
  **/
  
  (function ($, Drupal) {
    Drupal.behaviors.detailsAria = {
      attach: function attach() {
        $('body').once('detailsAria').on('click.detailsAria', 'summary', function (event) {
          var $summary = $(event.currentTarget);
          var open = $(event.currentTarget.parentNode).attr('open') === 'open' ? 'false' : 'true';
          $summary.attr({
            'aria-expanded': open,
            'aria-pressed': open
          });
        });
      }
    };
  })(jQuery, Drupal);;
  /**
  * DO NOT EDIT THIS FILE.
  * See the following change record for more information,
  * https://www.drupal.org/node/2815083
  * @preserve
  **/
  
  (function ($, Modernizr, Drupal) {
    function CollapsibleDetails(node) {
      this.$node = $(node);
      this.$node.data('details', this);
      var anchor = window.location.hash && window.location.hash !== '#' ? ", ".concat(window.location.hash) : '';
  
      if (this.$node.find(".error".concat(anchor)).length) {
        this.$node.attr('open', true);
      }
  
      this.setupSummaryPolyfill();
    }
  
    $.extend(CollapsibleDetails, {
      instances: []
    });
    $.extend(CollapsibleDetails.prototype, {
      setupSummaryPolyfill: function setupSummaryPolyfill() {
        var $summary = this.$node.find('> summary');
        $summary.attr('tabindex', '-1');
        $('<span class="details-summary-prefix visually-hidden"></span>').append(this.$node.attr('open') ? Drupal.t('Hide') : Drupal.t('Show')).prependTo($summary).after(document.createTextNode(' '));
        $('<a class="details-title"></a>').attr('href', "#".concat(this.$node.attr('id'))).prepend($summary.contents()).appendTo($summary);
        $summary.append(this.$summary).on('click', $.proxy(this.onSummaryClick, this));
      },
      onSummaryClick: function onSummaryClick(e) {
        this.toggle();
        e.preventDefault();
      },
      toggle: function toggle() {
        var _this = this;
  
        var isOpen = !!this.$node.attr('open');
        var $summaryPrefix = this.$node.find('> summary span.details-summary-prefix');
  
        if (isOpen) {
          $summaryPrefix.html(Drupal.t('Show'));
        } else {
          $summaryPrefix.html(Drupal.t('Hide'));
        }
  
        setTimeout(function () {
          _this.$node.attr('open', !isOpen);
        }, 0);
      }
    });
    Drupal.behaviors.collapse = {
      attach: function attach(context) {
        if (Modernizr.details) {
          return;
        }
  
        var $collapsibleDetails = $(context).find('details').once('collapse').addClass('collapse-processed');
  
        if ($collapsibleDetails.length) {
          for (var i = 0; i < $collapsibleDetails.length; i++) {
            CollapsibleDetails.instances.push(new CollapsibleDetails($collapsibleDetails[i]));
          }
        }
      }
    };
  
    var handleFragmentLinkClickOrHashChange = function handleFragmentLinkClickOrHashChange(e, $target) {
      $target.parents('details').not('[open]').find('> summary').trigger('click');
    };
  
    $('body').on('formFragmentLinkClickOrHashChange.details', handleFragmentLinkClickOrHashChange);
    Drupal.CollapsibleDetails = CollapsibleDetails;
  })(jQuery, Modernizr, Drupal);;
  /**
  * DO NOT EDIT THIS FILE.
  * See the following change record for more information,
  * https://www.drupal.org/node/2815083
  * @preserve
  **/
  
  (function ($, Modernizr, Drupal) {
    Drupal.behaviors.claroDetails = {
      attach: function attach(context) {
        $(context).once('claroDetails').on('click', function (event) {
          if (event.target.nodeName === 'SUMMARY') {
            $(event.target).trigger('focus');
          }
        });
      }
    };
    Drupal.behaviors.claroDetailsToggleShim = {
      attach: function attach(context) {
        if (Modernizr.details || !Drupal.CollapsibleDetails.instances.length) {
          return;
        }
  
        $(context).find('details .details-title').once('claroDetailsToggleShim').on('keypress', function (event) {
          var keyCode = event.keyCode || event.charCode;
  
          if (keyCode === 32) {
            $(event.target).closest('summary').trigger('click');
            event.preventDefault();
          }
        });
      }
    };
  
    Drupal.theme.detailsSummarizedContentWrapper = function () {
      return "<span class=\"claro-details__summary-summary\"></span>";
    };
  
    Drupal.theme.detailsSummarizedContentText = function (text) {
      return text || '';
    };
  })(jQuery, Modernizr, Drupal);;
  /**
   * @popperjs/core v2.9.2 - MIT License
   */
  
  "use strict";!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){function t(e){return{width:(e=e.getBoundingClientRect()).width,height:e.height,top:e.top,right:e.right,bottom:e.bottom,left:e.left,x:e.left,y:e.top}}function n(e){return null==e?window:"[object Window]"!==e.toString()?(e=e.ownerDocument)&&e.defaultView||window:e}function o(e){return{scrollLeft:(e=n(e)).pageXOffset,scrollTop:e.pageYOffset}}function r(e){return e instanceof n(e).Element||e instanceof Element}function i(e){return e instanceof n(e).HTMLElement||e instanceof HTMLElement}function a(e){return"undefined"!=typeof ShadowRoot&&(e instanceof n(e).ShadowRoot||e instanceof ShadowRoot)}function s(e){return e?(e.nodeName||"").toLowerCase():null}function f(e){return((r(e)?e.ownerDocument:e.document)||window.document).documentElement}function p(e){return t(f(e)).left+o(e).scrollLeft}function c(e){return n(e).getComputedStyle(e)}function l(e){return e=c(e),/auto|scroll|overlay|hidden/.test(e.overflow+e.overflowY+e.overflowX)}function u(e,r,a){void 0===a&&(a=!1);var c=f(r);e=t(e);var u=i(r),d={scrollLeft:0,scrollTop:0},m={x:0,y:0};return(u||!u&&!a)&&(("body"!==s(r)||l(c))&&(d=r!==n(r)&&i(r)?{scrollLeft:r.scrollLeft,scrollTop:r.scrollTop}:o(r)),i(r)?((m=t(r)).x+=r.clientLeft,m.y+=r.clientTop):c&&(m.x=p(c))),{x:e.left+d.scrollLeft-m.x,y:e.top+d.scrollTop-m.y,width:e.width,height:e.height}}function d(e){var n=t(e),o=e.offsetWidth,r=e.offsetHeight;return 1>=Math.abs(n.width-o)&&(o=n.width),1>=Math.abs(n.height-r)&&(r=n.height),{x:e.offsetLeft,y:e.offsetTop,width:o,height:r}}function m(e){return"html"===s(e)?e:e.assignedSlot||e.parentNode||(a(e)?e.host:null)||f(e)}function h(e){return 0<=["html","body","#document"].indexOf(s(e))?e.ownerDocument.body:i(e)&&l(e)?e:h(m(e))}function v(e,t){var o;void 0===t&&(t=[]);var r=h(e);return e=r===(null==(o=e.ownerDocument)?void 0:o.body),o=n(r),r=e?[o].concat(o.visualViewport||[],l(r)?r:[]):r,t=t.concat(r),e?t:t.concat(v(m(r)))}function g(e){return i(e)&&"fixed"!==c(e).position?e.offsetParent:null}function y(e){for(var t=n(e),o=g(e);o&&0<=["table","td","th"].indexOf(s(o))&&"static"===c(o).position;)o=g(o);if(o&&("html"===s(o)||"body"===s(o)&&"static"===c(o).position))return t;if(!o)e:{if(o=-1!==navigator.userAgent.toLowerCase().indexOf("firefox"),-1===navigator.userAgent.indexOf("Trident")||!i(e)||"fixed"!==c(e).position)for(e=m(e);i(e)&&0>["html","body"].indexOf(s(e));){var r=c(e);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||o&&"filter"===r.willChange||o&&r.filter&&"none"!==r.filter){o=e;break e}e=e.parentNode}o=null}return o||t}function b(e){function t(e){o.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){o.has(e)||(e=n.get(e))&&t(e)})),r.push(e)}var n=new Map,o=new Set,r=[];return e.forEach((function(e){n.set(e.name,e)})),e.forEach((function(e){o.has(e.name)||t(e)})),r}function w(e){var t;return function(){return t||(t=new Promise((function(n){Promise.resolve().then((function(){t=void 0,n(e())}))}))),t}}function x(e){return e.split("-")[0]}function O(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&a(n))do{if(t&&e.isSameNode(t))return!0;t=t.parentNode||t.host}while(t);return!1}function j(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function E(e,r){if("viewport"===r){r=n(e);var a=f(e);r=r.visualViewport;var s=a.clientWidth;a=a.clientHeight;var l=0,u=0;r&&(s=r.width,a=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(l=r.offsetLeft,u=r.offsetTop)),e=j(e={width:s,height:a,x:l+p(e),y:u})}else i(r)?((e=t(r)).top+=r.clientTop,e.left+=r.clientLeft,e.bottom=e.top+r.clientHeight,e.right=e.left+r.clientWidth,e.width=r.clientWidth,e.height=r.clientHeight,e.x=e.left,e.y=e.top):(u=f(e),e=f(u),s=o(u),r=null==(a=u.ownerDocument)?void 0:a.body,a=_(e.scrollWidth,e.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),l=_(e.scrollHeight,e.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),u=-s.scrollLeft+p(u),s=-s.scrollTop,"rtl"===c(r||e).direction&&(u+=_(e.clientWidth,r?r.clientWidth:0)-a),e=j({width:a,height:l,x:u,y:s}));return e}function D(e,t,n){return t="clippingParents"===t?function(e){var t=v(m(e)),n=0<=["absolute","fixed"].indexOf(c(e).position)&&i(e)?y(e):e;return r(n)?t.filter((function(e){return r(e)&&O(e,n)&&"body"!==s(e)})):[]}(e):[].concat(t),(n=(n=[].concat(t,[n])).reduce((function(t,n){return n=E(e,n),t.top=_(n.top,t.top),t.right=U(n.right,t.right),t.bottom=U(n.bottom,t.bottom),t.left=_(n.left,t.left),t}),E(e,n[0]))).width=n.right-n.left,n.height=n.bottom-n.top,n.x=n.left,n.y=n.top,n}function L(e){return 0<=["top","bottom"].indexOf(e)?"x":"y"}function P(e){var t=e.reference,n=e.element,o=(e=e.placement)?x(e):null;e=e?e.split("-")[1]:null;var r=t.x+t.width/2-n.width/2,i=t.y+t.height/2-n.height/2;switch(o){case"top":r={x:r,y:t.y-n.height};break;case"bottom":r={x:r,y:t.y+t.height};break;case"right":r={x:t.x+t.width,y:i};break;case"left":r={x:t.x-n.width,y:i};break;default:r={x:t.x,y:t.y}}if(null!=(o=o?L(o):null))switch(i="y"===o?"height":"width",e){case"start":r[o]-=t[i]/2-n[i]/2;break;case"end":r[o]+=t[i]/2-n[i]/2}return r}function M(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function k(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function A(e,n){void 0===n&&(n={});var o=n;n=void 0===(n=o.placement)?e.placement:n;var i=o.boundary,a=void 0===i?"clippingParents":i,s=void 0===(i=o.rootBoundary)?"viewport":i;i=void 0===(i=o.elementContext)?"popper":i;var p=o.altBoundary,c=void 0!==p&&p;o=M("number"!=typeof(o=void 0===(o=o.padding)?0:o)?o:k(o,C));var l=e.elements.reference;p=e.rects.popper,a=D(r(c=e.elements[c?"popper"===i?"reference":"popper":i])?c:c.contextElement||f(e.elements.popper),a,s),c=P({reference:s=t(l),element:p,strategy:"absolute",placement:n}),p=j(Object.assign({},p,c)),s="popper"===i?p:s;var u={top:a.top-s.top+o.top,bottom:s.bottom-a.bottom+o.bottom,left:a.left-s.left+o.left,right:s.right-a.right+o.right};if(e=e.modifiersData.offset,"popper"===i&&e){var d=e[n];Object.keys(u).forEach((function(e){var t=0<=["right","bottom"].indexOf(e)?1:-1,n=0<=["top","bottom"].indexOf(e)?"y":"x";u[e]+=d[n]*t}))}return u}function W(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some((function(e){return!(e&&"function"==typeof e.getBoundingClientRect)}))}function B(e){void 0===e&&(e={});var t=e.defaultModifiers,n=void 0===t?[]:t,o=void 0===(e=e.defaultOptions)?F:e;return function(e,t,i){function a(){f.forEach((function(e){return e()})),f=[]}void 0===i&&(i=o);var s={placement:"bottom",orderedModifiers:[],options:Object.assign({},F,o),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},f=[],p=!1,c={state:s,setOptions:function(i){return a(),s.options=Object.assign({},o,s.options,i),s.scrollParents={reference:r(e)?v(e):e.contextElement?v(e.contextElement):[],popper:v(t)},i=function(e){var t=b(e);return I.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])}(function(e){var t=e.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{});return Object.keys(t).map((function(e){return t[e]}))}([].concat(n,s.options.modifiers))),s.orderedModifiers=i.filter((function(e){return e.enabled})),s.orderedModifiers.forEach((function(e){var t=e.name,n=e.options;n=void 0===n?{}:n,"function"==typeof(e=e.effect)&&(t=e({state:s,name:t,instance:c,options:n}),f.push(t||function(){}))})),c.update()},forceUpdate:function(){if(!p){var e=s.elements,t=e.reference;if(W(t,e=e.popper))for(s.rects={reference:u(t,y(e),"fixed"===s.options.strategy),popper:d(e)},s.reset=!1,s.placement=s.options.placement,s.orderedModifiers.forEach((function(e){return s.modifiersData[e.name]=Object.assign({},e.data)})),t=0;t<s.orderedModifiers.length;t++)if(!0===s.reset)s.reset=!1,t=-1;else{var n=s.orderedModifiers[t];e=n.fn;var o=n.options;o=void 0===o?{}:o,n=n.name,"function"==typeof e&&(s=e({state:s,options:o,name:n,instance:c})||s)}}},update:w((function(){return new Promise((function(e){c.forceUpdate(),e(s)}))})),destroy:function(){a(),p=!0}};return W(e,t)?(c.setOptions(i).then((function(e){!p&&i.onFirstUpdate&&i.onFirstUpdate(e)})),c):c}}function T(e){var t,o=e.popper,r=e.popperRect,i=e.placement,a=e.offsets,s=e.position,p=e.gpuAcceleration,l=e.adaptive;if(!0===(e=e.roundOffsets)){e=a.y;var u=window.devicePixelRatio||1;e={x:z(z(a.x*u)/u)||0,y:z(z(e*u)/u)||0}}else e="function"==typeof e?e(a):a;e=void 0===(e=(u=e).x)?0:e,u=void 0===(u=u.y)?0:u;var d=a.hasOwnProperty("x");a=a.hasOwnProperty("y");var m,h="left",v="top",g=window;if(l){var b=y(o),w="clientHeight",x="clientWidth";b===n(o)&&("static"!==c(b=f(o)).position&&(w="scrollHeight",x="scrollWidth")),"top"===i&&(v="bottom",u-=b[w]-r.height,u*=p?1:-1),"left"===i&&(h="right",e-=b[x]-r.width,e*=p?1:-1)}return o=Object.assign({position:s},l&&J),p?Object.assign({},o,((m={})[v]=a?"0":"",m[h]=d?"0":"",m.transform=2>(g.devicePixelRatio||1)?"translate("+e+"px, "+u+"px)":"translate3d("+e+"px, "+u+"px, 0)",m)):Object.assign({},o,((t={})[v]=a?u+"px":"",t[h]=d?e+"px":"",t.transform="",t))}function H(e){return e.replace(/left|right|bottom|top/g,(function(e){return $[e]}))}function R(e){return e.replace(/start|end/g,(function(e){return ee[e]}))}function S(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function q(e){return["top","right","bottom","left"].some((function(t){return 0<=e[t]}))}var C=["top","bottom","right","left"],N=C.reduce((function(e,t){return e.concat([t+"-start",t+"-end"])}),[]),V=[].concat(C,["auto"]).reduce((function(e,t){return e.concat([t,t+"-start",t+"-end"])}),[]),I="beforeRead read afterRead beforeMain main afterMain beforeWrite write afterWrite".split(" "),_=Math.max,U=Math.min,z=Math.round,F={placement:"bottom",modifiers:[],strategy:"absolute"},X={passive:!0},Y={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,o=e.instance,r=(e=e.options).scroll,i=void 0===r||r,a=void 0===(e=e.resize)||e,s=n(t.elements.popper),f=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&f.forEach((function(e){e.addEventListener("scroll",o.update,X)})),a&&s.addEventListener("resize",o.update,X),function(){i&&f.forEach((function(e){e.removeEventListener("scroll",o.update,X)})),a&&s.removeEventListener("resize",o.update,X)}},data:{}},G={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state;t.modifiersData[e.name]=P({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},J={top:"auto",right:"auto",bottom:"auto",left:"auto"},K={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options;e=void 0===(e=n.gpuAcceleration)||e;var o=n.adaptive;o=void 0===o||o,n=void 0===(n=n.roundOffsets)||n,e={placement:x(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:e},null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,T(Object.assign({},e,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:o,roundOffsets:n})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,T(Object.assign({},e,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:n})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Q={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},o=t.attributes[e]||{},r=t.elements[e];i(r)&&s(r)&&(Object.assign(r.style,n),Object.keys(o).forEach((function(e){var t=o[e];!1===t?r.removeAttribute(e):r.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var o=t.elements[e],r=t.attributes[e]||{};e=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{}),i(o)&&s(o)&&(Object.assign(o.style,e),Object.keys(r).forEach((function(e){o.removeAttribute(e)})))}))}},requires:["computeStyles"]},Z={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.name,o=void 0===(e=e.options.offset)?[0,0]:e,r=(e=V.reduce((function(e,n){var r=t.rects,i=x(n),a=0<=["left","top"].indexOf(i)?-1:1,s="function"==typeof o?o(Object.assign({},r,{placement:n})):o;return r=(r=s[0])||0,s=((s=s[1])||0)*a,i=0<=["left","right"].indexOf(i)?{x:s,y:r}:{x:r,y:s},e[n]=i,e}),{}))[t.placement],i=r.x;r=r.y,null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=i,t.modifiersData.popperOffsets.y+=r),t.modifiersData[n]=e}},$={left:"right",right:"left",bottom:"top",top:"bottom"},ee={start:"end",end:"start"},te={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options;if(e=e.name,!t.modifiersData[e]._skip){var o=n.mainAxis;o=void 0===o||o;var r=n.altAxis;r=void 0===r||r;var i=n.fallbackPlacements,a=n.padding,s=n.boundary,f=n.rootBoundary,p=n.altBoundary,c=n.flipVariations,l=void 0===c||c,u=n.allowedAutoPlacements;c=x(n=t.options.placement),i=i||(c!==n&&l?function(e){if("auto"===x(e))return[];var t=H(e);return[R(e),t,R(t)]}(n):[H(n)]);var d=[n].concat(i).reduce((function(e,n){return e.concat("auto"===x(n)?function(e,t){void 0===t&&(t={});var n=t.boundary,o=t.rootBoundary,r=t.padding,i=t.flipVariations,a=t.allowedAutoPlacements,s=void 0===a?V:a,f=t.placement.split("-")[1];0===(i=(t=f?i?N:N.filter((function(e){return e.split("-")[1]===f})):C).filter((function(e){return 0<=s.indexOf(e)}))).length&&(i=t);var p=i.reduce((function(t,i){return t[i]=A(e,{placement:i,boundary:n,rootBoundary:o,padding:r})[x(i)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}(t,{placement:n,boundary:s,rootBoundary:f,padding:a,flipVariations:l,allowedAutoPlacements:u}):n)}),[]);n=t.rects.reference,i=t.rects.popper;var m=new Map;c=!0;for(var h=d[0],v=0;v<d.length;v++){var g=d[v],y=x(g),b="start"===g.split("-")[1],w=0<=["top","bottom"].indexOf(y),O=w?"width":"height",j=A(t,{placement:g,boundary:s,rootBoundary:f,altBoundary:p,padding:a});if(b=w?b?"right":"left":b?"bottom":"top",n[O]>i[O]&&(b=H(b)),O=H(b),w=[],o&&w.push(0>=j[y]),r&&w.push(0>=j[b],0>=j[O]),w.every((function(e){return e}))){h=g,c=!1;break}m.set(g,w)}if(c)for(o=function(e){var t=d.find((function(t){if(t=m.get(t))return t.slice(0,e).every((function(e){return e}))}));if(t)return h=t,"break"},r=l?3:1;0<r&&"break"!==o(r);r--);t.placement!==h&&(t.modifiersData[e]._skip=!0,t.placement=h,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}},ne={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options;e=e.name;var o=n.mainAxis,r=void 0===o||o,i=void 0!==(o=n.altAxis)&&o;o=void 0===(o=n.tether)||o;var a=n.tetherOffset,s=void 0===a?0:a,f=A(t,{boundary:n.boundary,rootBoundary:n.rootBoundary,padding:n.padding,altBoundary:n.altBoundary});n=x(t.placement);var p=t.placement.split("-")[1],c=!p,l=L(n);n="x"===l?"y":"x",a=t.modifiersData.popperOffsets;var u=t.rects.reference,m=t.rects.popper,h="function"==typeof s?s(Object.assign({},t.rects,{placement:t.placement})):s;if(s={x:0,y:0},a){if(r||i){var v="y"===l?"top":"left",g="y"===l?"bottom":"right",b="y"===l?"height":"width",w=a[l],O=a[l]+f[v],j=a[l]-f[g],E=o?-m[b]/2:0,D="start"===p?u[b]:m[b];p="start"===p?-m[b]:-u[b],m=t.elements.arrow,m=o&&m?d(m):{width:0,height:0};var P=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0};v=P[v],g=P[g],m=_(0,U(u[b],m[b])),D=c?u[b]/2-E-m-v-h:D-m-v-h,u=c?-u[b]/2+E+m+g+h:p+m+g+h,c=t.elements.arrow&&y(t.elements.arrow),h=t.modifiersData.offset?t.modifiersData.offset[t.placement][l]:0,c=a[l]+D-h-(c?"y"===l?c.clientTop||0:c.clientLeft||0:0),u=a[l]+u-h,r&&(r=o?U(O,c):O,j=o?_(j,u):j,r=_(r,U(w,j)),a[l]=r,s[l]=r-w),i&&(r=(i=a[n])+f["x"===l?"top":"left"],f=i-f["x"===l?"bottom":"right"],r=o?U(r,c):r,o=o?_(f,u):f,o=_(r,U(i,o)),a[n]=o,s[n]=o-i)}t.modifiersData[e]=s}},requiresIfExists:["offset"]},oe={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,o=e.name,r=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=x(n.placement);if(e=L(s),s=0<=["left","right"].indexOf(s)?"height":"width",i&&a){r=M("number"!=typeof(r="function"==typeof(r=r.padding)?r(Object.assign({},n.rects,{placement:n.placement})):r)?r:k(r,C));var f=d(i),p="y"===e?"top":"left",c="y"===e?"bottom":"right",l=n.rects.reference[s]+n.rects.reference[e]-a[e]-n.rects.popper[s];a=a[e]-n.rects.reference[e],a=(i=(i=y(i))?"y"===e?i.clientHeight||0:i.clientWidth||0:0)/2-f[s]/2+(l/2-a/2),s=_(r[p],U(a,i-f[s]-r[c])),n.modifiersData[o]=((t={})[e]=s,t.centerOffset=s-a,t)}},effect:function(e){var t=e.state;if(null!=(e=void 0===(e=e.options.element)?"[data-popper-arrow]":e)){if("string"==typeof e&&!(e=t.elements.popper.querySelector(e)))return;O(t.elements.popper,e)&&(t.elements.arrow=e)}},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},re={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state;e=e.name;var n=t.rects.reference,o=t.rects.popper,r=t.modifiersData.preventOverflow,i=A(t,{elementContext:"reference"}),a=A(t,{altBoundary:!0});n=S(i,n),o=S(a,o,r),r=q(n),a=q(o),t.modifiersData[e]={referenceClippingOffsets:n,popperEscapeOffsets:o,isReferenceHidden:r,hasPopperEscaped:a},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":r,"data-popper-escaped":a})}},ie=B({defaultModifiers:[Y,G,K,Q]}),ae=[Y,G,K,Q,Z,te,ne,oe,re],se=B({defaultModifiers:ae});e.applyStyles=Q,e.arrow=oe,e.computeStyles=K,e.createPopper=se,e.createPopperLite=ie,e.defaultModifiers=ae,e.detectOverflow=A,e.eventListeners=Y,e.flip=te,e.hide=re,e.offset=Z,e.popperGenerator=B,e.popperOffsets=G,e.preventOverflow=ne,Object.defineProperty(e,"__esModule",{value:!0})}));
  
  ;
  