{"version":3,"file":"../../bower_components/select2.js","mappings":"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IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,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","sources":["webpack:///./node_modules/select2/dist/js/select2.js","webpack:///external var \"jQuery\""],"sourcesContent":["/*!\n * Select2 4.1.0-rc.0\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(['jquery'], factory);\n  } else if (typeof module === 'object' && module.exports) {\n    // Node/CommonJS\n    module.exports = function (root, jQuery) {\n      if (jQuery === undefined) {\n        // require('jQuery') returns a factory that requires window to\n        // build a jQuery instance, we normalize how we use modules\n        // that require this pattern but the window provided is a noop\n        // if it's defined (how jquery works)\n        if (typeof window !== 'undefined') {\n          jQuery = require('jquery');\n        }\n        else {\n          jQuery = require('jquery')(root);\n        }\n      }\n      factory(jQuery);\n      return jQuery;\n    };\n  } else {\n    // Browser globals\n    factory(jQuery);\n  }\n} (function (jQuery) {\n  // This is needed so we can catch the AMD loader configuration and use it\n  // The inner file should be wrapped (by `banner.start.js`) in a function that\n  // returns the AMD loader references.\n  var S2 =(function () {\n  // Restore the Select2 AMD loader so it can be used\n  // Needed mostly in the language files, where the loader is not inserted\n  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n    var S2 = jQuery.fn.select2.amd;\n  }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n    var main, req, makeMap, handlers,\n        defined = {},\n        waiting = {},\n        config = {},\n        defining = {},\n        hasOwn = Object.prototype.hasOwnProperty,\n        aps = [].slice,\n        jsSuffixRegExp = /\\.js$/;\n\n    function hasProp(obj, prop) {\n        return hasOwn.call(obj, prop);\n    }\n\n    /**\n     * Given a relative module name, like ./something, normalize it to\n     * a real name that can be mapped to a path.\n     * @param {String} name the relative name\n     * @param {String} baseName a real name that the name arg is relative\n     * to.\n     * @returns {String} normalized name\n     */\n    function normalize(name, baseName) {\n        var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n            foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n            baseParts = baseName && baseName.split(\"/\"),\n            map = config.map,\n            starMap = (map && map['*']) || {};\n\n        //Adjust any relative paths.\n        if (name) {\n            name = name.split('/');\n            lastIndex = name.length - 1;\n\n            // If wanting node ID compatibility, strip .js from end\n            // of IDs. Have to do this here, and not in nameToUrl\n            // because node allows either .js or non .js to map\n            // to same file.\n            if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n                name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n            }\n\n            // Starts with a '.' so need the baseName\n            if (name[0].charAt(0) === '.' && baseParts) {\n                //Convert baseName to array, and lop off the last part,\n                //so that . matches that 'directory' and not name of the baseName's\n                //module. For instance, baseName of 'one/two/three', maps to\n                //'one/two/three.js', but we want the directory, 'one/two' for\n                //this normalization.\n                normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n                name = normalizedBaseParts.concat(name);\n            }\n\n            //start trimDots\n            for (i = 0; i < name.length; i++) {\n                part = name[i];\n                if (part === '.') {\n                    name.splice(i, 1);\n                    i -= 1;\n                } else if (part === '..') {\n                    // If at the start, or previous value is still ..,\n                    // keep them so that when converted to a path it may\n                    // still work when converted to a path, even though\n                    // as an ID it is less than ideal. In larger point\n                    // releases, may be better to just kick out an error.\n                    if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n                        continue;\n                    } else if (i > 0) {\n                        name.splice(i - 1, 2);\n                        i -= 2;\n                    }\n                }\n            }\n            //end trimDots\n\n            name = name.join('/');\n        }\n\n        //Apply map config if available.\n        if ((baseParts || starMap) && map) {\n            nameParts = name.split('/');\n\n            for (i = nameParts.length; i > 0; i -= 1) {\n                nameSegment = nameParts.slice(0, i).join(\"/\");\n\n                if (baseParts) {\n                    //Find the longest baseName segment match in the config.\n                    //So, do joins on the biggest to smallest lengths of baseParts.\n                    for (j = baseParts.length; j > 0; j -= 1) {\n                        mapValue = map[baseParts.slice(0, j).join('/')];\n\n                        //baseName segment has  config, find if it has one for\n                        //this name.\n                        if (mapValue) {\n                            mapValue = mapValue[nameSegment];\n                            if (mapValue) {\n                                //Match, update name to the new value.\n                                foundMap = mapValue;\n                                foundI = i;\n                                break;\n                            }\n                        }\n                    }\n                }\n\n                if (foundMap) {\n                    break;\n                }\n\n                //Check for a star map match, but just hold on to it,\n                //if there is a shorter segment match later in a matching\n                //config, then favor over this star map.\n                if (!foundStarMap && starMap && starMap[nameSegment]) {\n                    foundStarMap = starMap[nameSegment];\n                    starI = i;\n                }\n            }\n\n            if (!foundMap && foundStarMap) {\n                foundMap = foundStarMap;\n                foundI = starI;\n            }\n\n            if (foundMap) {\n                nameParts.splice(0, foundI, foundMap);\n                name = nameParts.join('/');\n            }\n        }\n\n        return name;\n    }\n\n    function makeRequire(relName, forceSync) {\n        return function () {\n            //A version of a require function that passes a moduleName\n            //value for items that may need to\n            //look up paths relative to the moduleName\n            var args = aps.call(arguments, 0);\n\n            //If first arg is not require('string'), and there is only\n            //one arg, it is the array form without a callback. Insert\n            //a null so that the following concat is correct.\n            if (typeof args[0] !== 'string' && args.length === 1) {\n                args.push(null);\n            }\n            return req.apply(undef, args.concat([relName, forceSync]));\n        };\n    }\n\n    function makeNormalize(relName) {\n        return function (name) {\n            return normalize(name, relName);\n        };\n    }\n\n    function makeLoad(depName) {\n        return function (value) {\n            defined[depName] = value;\n        };\n    }\n\n    function callDep(name) {\n        if (hasProp(waiting, name)) {\n            var args = waiting[name];\n            delete waiting[name];\n            defining[name] = true;\n            main.apply(undef, args);\n        }\n\n        if (!hasProp(defined, name) && !hasProp(defining, name)) {\n            throw new Error('No ' + name);\n        }\n        return defined[name];\n    }\n\n    //Turns a plugin!resource to [plugin, resource]\n    //with the plugin being undefined if the name\n    //did not have a plugin prefix.\n    function splitPrefix(name) {\n        var prefix,\n            index = name ? name.indexOf('!') : -1;\n        if (index > -1) {\n            prefix = name.substring(0, index);\n            name = name.substring(index + 1, name.length);\n        }\n        return [prefix, name];\n    }\n\n    //Creates a parts array for a relName where first part is plugin ID,\n    //second part is resource ID. Assumes relName has already been normalized.\n    function makeRelParts(relName) {\n        return relName ? splitPrefix(relName) : [];\n    }\n\n    /**\n     * Makes a name map, normalizing the name, and using a plugin\n     * for normalization if necessary. Grabs a ref to plugin\n     * too, as an optimization.\n     */\n    makeMap = function (name, relParts) {\n        var plugin,\n            parts = splitPrefix(name),\n            prefix = parts[0],\n            relResourceName = relParts[1];\n\n        name = parts[1];\n\n        if (prefix) {\n            prefix = normalize(prefix, relResourceName);\n            plugin = callDep(prefix);\n        }\n\n        //Normalize according\n        if (prefix) {\n            if (plugin && plugin.normalize) {\n                name = plugin.normalize(name, makeNormalize(relResourceName));\n            } else {\n                name = normalize(name, relResourceName);\n            }\n        } else {\n            name = normalize(name, relResourceName);\n            parts = splitPrefix(name);\n            prefix = parts[0];\n            name = parts[1];\n            if (prefix) {\n                plugin = callDep(prefix);\n            }\n        }\n\n        //Using ridiculous property names for space reasons\n        return {\n            f: prefix ? prefix + '!' + name : name, //fullName\n            n: name,\n            pr: prefix,\n            p: plugin\n        };\n    };\n\n    function makeConfig(name) {\n        return function () {\n            return (config && config.config && config.config[name]) || {};\n        };\n    }\n\n    handlers = {\n        require: function (name) {\n            return makeRequire(name);\n        },\n        exports: function (name) {\n            var e = defined[name];\n            if (typeof e !== 'undefined') {\n                return e;\n            } else {\n                return (defined[name] = {});\n            }\n        },\n        module: function (name) {\n            return {\n                id: name,\n                uri: '',\n                exports: defined[name],\n                config: makeConfig(name)\n            };\n        }\n    };\n\n    main = function (name, deps, callback, relName) {\n        var cjsModule, depName, ret, map, i, relParts,\n            args = [],\n            callbackType = typeof callback,\n            usingExports;\n\n        //Use name if no relName\n        relName = relName || name;\n        relParts = makeRelParts(relName);\n\n        //Call the callback to define the module, if necessary.\n        if (callbackType === 'undefined' || callbackType === 'function') {\n            //Pull out the defined dependencies and pass the ordered\n            //values to the callback.\n            //Default to [require, exports, module] if no deps\n            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n            for (i = 0; i < deps.length; i += 1) {\n                map = makeMap(deps[i], relParts);\n                depName = map.f;\n\n                //Fast path CommonJS standard dependencies.\n                if (depName === \"require\") {\n                    args[i] = handlers.require(name);\n                } else if (depName === \"exports\") {\n                    //CommonJS module spec 1.1\n                    args[i] = handlers.exports(name);\n                    usingExports = true;\n                } else if (depName === \"module\") {\n                    //CommonJS module spec 1.1\n                    cjsModule = args[i] = handlers.module(name);\n                } else if (hasProp(defined, depName) ||\n                           hasProp(waiting, depName) ||\n                           hasProp(defining, depName)) {\n                    args[i] = callDep(depName);\n                } else if (map.p) {\n                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n                    args[i] = defined[depName];\n                } else {\n                    throw new Error(name + ' missing ' + depName);\n                }\n            }\n\n            ret = callback ? callback.apply(defined[name], args) : undefined;\n\n            if (name) {\n                //If setting exports via \"module\" is in play,\n                //favor that over return value and exports. After that,\n                //favor a non-undefined return value over exports use.\n                if (cjsModule && cjsModule.exports !== undef &&\n                        cjsModule.exports !== defined[name]) {\n                    defined[name] = cjsModule.exports;\n                } else if (ret !== undef || !usingExports) {\n                    //Use the return value from the function.\n                    defined[name] = ret;\n                }\n            }\n        } else if (name) {\n            //May just be an object definition for the module. Only\n            //worry about defining if have a module name.\n            defined[name] = callback;\n        }\n    };\n\n    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n        if (typeof deps === \"string\") {\n            if (handlers[deps]) {\n                //callback in this case is really relName\n                return handlers[deps](callback);\n            }\n            //Just return the module wanted. In this scenario, the\n            //deps arg is the module name, and second arg (if passed)\n            //is just the relName.\n            //Normalize module name, if it contains . or ..\n            return callDep(makeMap(deps, makeRelParts(callback)).f);\n        } else if (!deps.splice) {\n            //deps is a config object, not an array.\n            config = deps;\n            if (config.deps) {\n                req(config.deps, config.callback);\n            }\n            if (!callback) {\n                return;\n            }\n\n            if (callback.splice) {\n                //callback is an array, which means it is a dependency list.\n                //Adjust args if there are dependencies\n                deps = callback;\n                callback = relName;\n                relName = null;\n            } else {\n                deps = undef;\n            }\n        }\n\n        //Support require(['a'])\n        callback = callback || function () {};\n\n        //If relName is a function, it is an errback handler,\n        //so remove it.\n        if (typeof relName === 'function') {\n            relName = forceSync;\n            forceSync = alt;\n        }\n\n        //Simulate async callback;\n        if (forceSync) {\n            main(undef, deps, callback, relName);\n        } else {\n            //Using a non-zero value because of concern for what old browsers\n            //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n            //If want a value immediately, use require('id') instead -- something\n            //that works in almond on the global level, but not guaranteed and\n            //unlikely to work in other AMD implementations.\n            setTimeout(function () {\n                main(undef, deps, callback, relName);\n            }, 4);\n        }\n\n        return req;\n    };\n\n    /**\n     * Just drops the config on the floor, but returns req in case\n     * the config return value is used.\n     */\n    req.config = function (cfg) {\n        return req(cfg);\n    };\n\n    /**\n     * Expose module registry for debugging and tooling\n     */\n    requirejs._defined = defined;\n\n    define = function (name, deps, callback) {\n        if (typeof name !== 'string') {\n            throw new Error('See almond README: incorrect module build, no module name');\n        }\n\n        //This module may not have dependencies\n        if (!deps.splice) {\n            //deps is not an array, so probably means\n            //an object literal or factory function for\n            //the value. Adjust args.\n            callback = deps;\n            deps = [];\n        }\n\n        if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n            waiting[name] = [name, deps, callback];\n        }\n    };\n\n    define.amd = {\n        jQuery: true\n    };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n  var _$ = jQuery || $;\n\n  if (_$ == null && console && console.error) {\n    console.error(\n      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n      'found. Make sure that you are including jQuery before Select2 on your ' +\n      'web page.'\n    );\n  }\n\n  return _$;\n});\n\nS2.define('select2/utils',[\n  'jquery'\n], function ($) {\n  var Utils = {};\n\n  Utils.Extend = function (ChildClass, SuperClass) {\n    var __hasProp = {}.hasOwnProperty;\n\n    function BaseConstructor () {\n      this.constructor = ChildClass;\n    }\n\n    for (var key in SuperClass) {\n      if (__hasProp.call(SuperClass, key)) {\n        ChildClass[key] = SuperClass[key];\n      }\n    }\n\n    BaseConstructor.prototype = SuperClass.prototype;\n    ChildClass.prototype = new BaseConstructor();\n    ChildClass.__super__ = SuperClass.prototype;\n\n    return ChildClass;\n  };\n\n  function getMethods (theClass) {\n    var proto = theClass.prototype;\n\n    var methods = [];\n\n    for (var methodName in proto) {\n      var m = proto[methodName];\n\n      if (typeof m !== 'function') {\n        continue;\n      }\n\n      if (methodName === 'constructor') {\n        continue;\n      }\n\n      methods.push(methodName);\n    }\n\n    return methods;\n  }\n\n  Utils.Decorate = function (SuperClass, DecoratorClass) {\n    var decoratedMethods = getMethods(DecoratorClass);\n    var superMethods = getMethods(SuperClass);\n\n    function DecoratedClass () {\n      var unshift = Array.prototype.unshift;\n\n      var argCount = DecoratorClass.prototype.constructor.length;\n\n      var calledConstructor = SuperClass.prototype.constructor;\n\n      if (argCount > 0) {\n        unshift.call(arguments, SuperClass.prototype.constructor);\n\n        calledConstructor = DecoratorClass.prototype.constructor;\n      }\n\n      calledConstructor.apply(this, arguments);\n    }\n\n    DecoratorClass.displayName = SuperClass.displayName;\n\n    function ctr () {\n      this.constructor = DecoratedClass;\n    }\n\n    DecoratedClass.prototype = new ctr();\n\n    for (var m = 0; m < superMethods.length; m++) {\n      var superMethod = superMethods[m];\n\n      DecoratedClass.prototype[superMethod] =\n        SuperClass.prototype[superMethod];\n    }\n\n    var calledMethod = function (methodName) {\n      // Stub out the original method if it's not decorating an actual method\n      var originalMethod = function () {};\n\n      if (methodName in DecoratedClass.prototype) {\n        originalMethod = DecoratedClass.prototype[methodName];\n      }\n\n      var decoratedMethod = DecoratorClass.prototype[methodName];\n\n      return function () {\n        var unshift = Array.prototype.unshift;\n\n        unshift.call(arguments, originalMethod);\n\n        return decoratedMethod.apply(this, arguments);\n      };\n    };\n\n    for (var d = 0; d < decoratedMethods.length; d++) {\n      var decoratedMethod = decoratedMethods[d];\n\n      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n    }\n\n    return DecoratedClass;\n  };\n\n  var Observable = function () {\n    this.listeners = {};\n  };\n\n  Observable.prototype.on = function (event, callback) {\n    this.listeners = this.listeners || {};\n\n    if (event in this.listeners) {\n      this.listeners[event].push(callback);\n    } else {\n      this.listeners[event] = [callback];\n    }\n  };\n\n  Observable.prototype.trigger = function (event) {\n    var slice = Array.prototype.slice;\n    var params = slice.call(arguments, 1);\n\n    this.listeners = this.listeners || {};\n\n    // Params should always come in as an array\n    if (params == null) {\n      params = [];\n    }\n\n    // If there are no arguments to the event, use a temporary object\n    if (params.length === 0) {\n      params.push({});\n    }\n\n    // Set the `_type` of the first object to the event\n    params[0]._type = event;\n\n    if (event in this.listeners) {\n      this.invoke(this.listeners[event], slice.call(arguments, 1));\n    }\n\n    if ('*' in this.listeners) {\n      this.invoke(this.listeners['*'], arguments);\n    }\n  };\n\n  Observable.prototype.invoke = function (listeners, params) {\n    for (var i = 0, len = listeners.length; i < len; i++) {\n      listeners[i].apply(this, params);\n    }\n  };\n\n  Utils.Observable = Observable;\n\n  Utils.generateChars = function (length) {\n    var chars = '';\n\n    for (var i = 0; i < length; i++) {\n      var randomChar = Math.floor(Math.random() * 36);\n      chars += randomChar.toString(36);\n    }\n\n    return chars;\n  };\n\n  Utils.bind = function (func, context) {\n    return function () {\n      func.apply(context, arguments);\n    };\n  };\n\n  Utils._convertData = function (data) {\n    for (var originalKey in data) {\n      var keys = originalKey.split('-');\n\n      var dataLevel = data;\n\n      if (keys.length === 1) {\n        continue;\n      }\n\n      for (var k = 0; k < keys.length; k++) {\n        var key = keys[k];\n\n        // Lowercase the first letter\n        // By default, dash-separated becomes camelCase\n        key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n        if (!(key in dataLevel)) {\n          dataLevel[key] = {};\n        }\n\n        if (k == keys.length - 1) {\n          dataLevel[key] = data[originalKey];\n        }\n\n        dataLevel = dataLevel[key];\n      }\n\n      delete data[originalKey];\n    }\n\n    return data;\n  };\n\n  Utils.hasScroll = function (index, el) {\n    // Adapted from the function created by @ShadowScripter\n    // and adapted by @BillBarry on the Stack Exchange Code Review website.\n    // The original code can be found at\n    // http://codereview.stackexchange.com/q/13338\n    // and was designed to be used with the Sizzle selector engine.\n\n    var $el = $(el);\n    var overflowX = el.style.overflowX;\n    var overflowY = el.style.overflowY;\n\n    //Check both x and y declarations\n    if (overflowX === overflowY &&\n        (overflowY === 'hidden' || overflowY === 'visible')) {\n      return false;\n    }\n\n    if (overflowX === 'scroll' || overflowY === 'scroll') {\n      return true;\n    }\n\n    return ($el.innerHeight() < el.scrollHeight ||\n      $el.innerWidth() < el.scrollWidth);\n  };\n\n  Utils.escapeMarkup = function (markup) {\n    var replaceMap = {\n      '\\\\': '&#92;',\n      '&': '&amp;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '\"': '&quot;',\n      '\\'': '&#39;',\n      '/': '&#47;'\n    };\n\n    // Do not try to escape the markup if it's not a string\n    if (typeof markup !== 'string') {\n      return markup;\n    }\n\n    return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n      return replaceMap[match];\n    });\n  };\n\n  // Cache objects in Utils.__cache instead of $.data (see #4346)\n  Utils.__cache = {};\n\n  var id = 0;\n  Utils.GetUniqueElementId = function (element) {\n    // Get a unique element Id. If element has no id,\n    // creates a new unique number, stores it in the id\n    // attribute and returns the new id with a prefix.\n    // If an id already exists, it simply returns it with a prefix.\n\n    var select2Id = element.getAttribute('data-select2-id');\n\n    if (select2Id != null) {\n      return select2Id;\n    }\n\n    // If element has id, use it.\n    if (element.id) {\n      select2Id = 'select2-data-' + element.id;\n    } else {\n      select2Id = 'select2-data-' + (++id).toString() +\n        '-' + Utils.generateChars(4);\n    }\n\n    element.setAttribute('data-select2-id', select2Id);\n\n    return select2Id;\n  };\n\n  Utils.StoreData = function (element, name, value) {\n    // Stores an item in the cache for a specified element.\n    // name is the cache key.\n    var id = Utils.GetUniqueElementId(element);\n    if (!Utils.__cache[id]) {\n      Utils.__cache[id] = {};\n    }\n\n    Utils.__cache[id][name] = value;\n  };\n\n  Utils.GetData = function (element, name) {\n    // Retrieves a value from the cache by its key (name)\n    // name is optional. If no name specified, return\n    // all cache items for the specified element.\n    // and for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (name) {\n      if (Utils.__cache[id]) {\n        if (Utils.__cache[id][name] != null) {\n          return Utils.__cache[id][name];\n        }\n        return $(element).data(name); // Fallback to HTML5 data attribs.\n      }\n      return $(element).data(name); // Fallback to HTML5 data attribs.\n    } else {\n      return Utils.__cache[id];\n    }\n  };\n\n  Utils.RemoveData = function (element) {\n    // Removes all cached items for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (Utils.__cache[id] != null) {\n      delete Utils.__cache[id];\n    }\n\n    element.removeAttribute('data-select2-id');\n  };\n\n  Utils.copyNonInternalCssClasses = function (dest, src) {\n    var classes;\n\n    var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n\n    destinationClasses = destinationClasses.filter(function (clazz) {\n      // Save all Select2 classes\n      return clazz.indexOf('select2-') === 0;\n    });\n\n    var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n\n    sourceClasses = sourceClasses.filter(function (clazz) {\n      // Only copy non-Select2 classes\n      return clazz.indexOf('select2-') !== 0;\n    });\n\n    var replacements = destinationClasses.concat(sourceClasses);\n\n    dest.setAttribute('class', replacements.join(' '));\n  };\n\n  return Utils;\n});\n\nS2.define('select2/results',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Results ($element, options, dataAdapter) {\n    this.$element = $element;\n    this.data = dataAdapter;\n    this.options = options;\n\n    Results.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Results, Utils.Observable);\n\n  Results.prototype.render = function () {\n    var $results = $(\n      '<ul class=\"select2-results__options\" role=\"listbox\"></ul>'\n    );\n\n    if (this.options.get('multiple')) {\n      $results.attr('aria-multiselectable', 'true');\n    }\n\n    this.$results = $results;\n\n    return $results;\n  };\n\n  Results.prototype.clear = function () {\n    this.$results.empty();\n  };\n\n  Results.prototype.displayMessage = function (params) {\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    this.clear();\n    this.hideLoading();\n\n    var $message = $(\n      '<li role=\"alert\" aria-live=\"assertive\"' +\n      ' class=\"select2-results__option\"></li>'\n    );\n\n    var message = this.options.get('translations').get(params.message);\n\n    $message.append(\n      escapeMarkup(\n        message(params.args)\n      )\n    );\n\n    $message[0].className += ' select2-results__message';\n\n    this.$results.append($message);\n  };\n\n  Results.prototype.hideMessages = function () {\n    this.$results.find('.select2-results__message').remove();\n  };\n\n  Results.prototype.append = function (data) {\n    this.hideLoading();\n\n    var $options = [];\n\n    if (data.results == null || data.results.length === 0) {\n      if (this.$results.children().length === 0) {\n        this.trigger('results:message', {\n          message: 'noResults'\n        });\n      }\n\n      return;\n    }\n\n    data.results = this.sort(data.results);\n\n    for (var d = 0; d < data.results.length; d++) {\n      var item = data.results[d];\n\n      var $option = this.option(item);\n\n      $options.push($option);\n    }\n\n    this.$results.append($options);\n  };\n\n  Results.prototype.position = function ($results, $dropdown) {\n    var $resultsContainer = $dropdown.find('.select2-results');\n    $resultsContainer.append($results);\n  };\n\n  Results.prototype.sort = function (data) {\n    var sorter = this.options.get('sorter');\n\n    return sorter(data);\n  };\n\n  Results.prototype.highlightFirstItem = function () {\n    var $options = this.$results\n      .find('.select2-results__option--selectable');\n\n    var $selected = $options.filter('.select2-results__option--selected');\n\n    // Check if there are any selected options\n    if ($selected.length > 0) {\n      // If there are selected options, highlight the first\n      $selected.first().trigger('mouseenter');\n    } else {\n      // If there are no selected options, highlight the first option\n      // in the dropdown\n      $options.first().trigger('mouseenter');\n    }\n\n    this.ensureHighlightVisible();\n  };\n\n  Results.prototype.setClasses = function () {\n    var self = this;\n\n    this.data.current(function (selected) {\n      var selectedIds = selected.map(function (s) {\n        return s.id.toString();\n      });\n\n      var $options = self.$results\n        .find('.select2-results__option--selectable');\n\n      $options.each(function () {\n        var $option = $(this);\n\n        var item = Utils.GetData(this, 'data');\n\n        // id needs to be converted to a string when comparing\n        var id = '' + item.id;\n\n        if ((item.element != null && item.element.selected) ||\n            (item.element == null && selectedIds.indexOf(id) > -1)) {\n          this.classList.add('select2-results__option--selected');\n          $option.attr('aria-selected', 'true');\n        } else {\n          this.classList.remove('select2-results__option--selected');\n          $option.attr('aria-selected', 'false');\n        }\n      });\n\n    });\n  };\n\n  Results.prototype.showLoading = function (params) {\n    this.hideLoading();\n\n    var loadingMore = this.options.get('translations').get('searching');\n\n    var loading = {\n      disabled: true,\n      loading: true,\n      text: loadingMore(params)\n    };\n    var $loading = this.option(loading);\n    $loading.className += ' loading-results';\n\n    this.$results.prepend($loading);\n  };\n\n  Results.prototype.hideLoading = function () {\n    this.$results.find('.loading-results').remove();\n  };\n\n  Results.prototype.option = function (data) {\n    var option = document.createElement('li');\n    option.classList.add('select2-results__option');\n    option.classList.add('select2-results__option--selectable');\n\n    var attrs = {\n      'role': 'option'\n    };\n\n    var matches = window.Element.prototype.matches ||\n      window.Element.prototype.msMatchesSelector ||\n      window.Element.prototype.webkitMatchesSelector;\n\n    if ((data.element != null && matches.call(data.element, ':disabled')) ||\n        (data.element == null && data.disabled)) {\n      attrs['aria-disabled'] = 'true';\n\n      option.classList.remove('select2-results__option--selectable');\n      option.classList.add('select2-results__option--disabled');\n    }\n\n    if (data.id == null) {\n      option.classList.remove('select2-results__option--selectable');\n    }\n\n    if (data._resultId != null) {\n      option.id = data._resultId;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    if (data.children) {\n      attrs.role = 'group';\n      attrs['aria-label'] = data.text;\n\n      option.classList.remove('select2-results__option--selectable');\n      option.classList.add('select2-results__option--group');\n    }\n\n    for (var attr in attrs) {\n      var val = attrs[attr];\n\n      option.setAttribute(attr, val);\n    }\n\n    if (data.children) {\n      var $option = $(option);\n\n      var label = document.createElement('strong');\n      label.className = 'select2-results__group';\n\n      this.template(data, label);\n\n      var $children = [];\n\n      for (var c = 0; c < data.children.length; c++) {\n        var child = data.children[c];\n\n        var $child = this.option(child);\n\n        $children.push($child);\n      }\n\n      var $childrenContainer = $('<ul></ul>', {\n        'class': 'select2-results__options select2-results__options--nested',\n        'role': 'none'\n      });\n\n      $childrenContainer.append($children);\n\n      $option.append(label);\n      $option.append($childrenContainer);\n    } else {\n      this.template(data, option);\n    }\n\n    Utils.StoreData(option, 'data', data);\n\n    return option;\n  };\n\n  Results.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var id = container.id + '-results';\n\n    this.$results.attr('id', id);\n\n    container.on('results:all', function (params) {\n      self.clear();\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('results:append', function (params) {\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n      }\n    });\n\n    container.on('query', function (params) {\n      self.hideMessages();\n      self.showLoading(params);\n    });\n\n    container.on('select', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('unselect', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expended=\"true\"\n      self.$results.attr('aria-expanded', 'true');\n      self.$results.attr('aria-hidden', 'false');\n\n      self.setClasses();\n      self.ensureHighlightVisible();\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expended=\"false\"\n      self.$results.attr('aria-expanded', 'false');\n      self.$results.attr('aria-hidden', 'true');\n      self.$results.removeAttr('aria-activedescendant');\n    });\n\n    container.on('results:toggle', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      $highlighted.trigger('mouseup');\n    });\n\n    container.on('results:select', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      var data = Utils.GetData($highlighted[0], 'data');\n\n      if ($highlighted.hasClass('select2-results__option--selected')) {\n        self.trigger('close', {});\n      } else {\n        self.trigger('select', {\n          data: data\n        });\n      }\n    });\n\n    container.on('results:previous', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('.select2-results__option--selectable');\n\n      var currentIndex = $options.index($highlighted);\n\n      // If we are already at the top, don't move further\n      // If no options, currentIndex will be -1\n      if (currentIndex <= 0) {\n        return;\n      }\n\n      var nextIndex = currentIndex - 1;\n\n      // If none are highlighted, highlight the first\n      if ($highlighted.length === 0) {\n        nextIndex = 0;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top;\n      var nextTop = $next.offset().top;\n      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextTop - currentOffset < 0) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:next', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('.select2-results__option--selectable');\n\n      var currentIndex = $options.index($highlighted);\n\n      var nextIndex = currentIndex + 1;\n\n      // If we are at the last option, stay there\n      if (nextIndex >= $options.length) {\n        return;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top +\n        self.$results.outerHeight(false);\n      var nextBottom = $next.offset().top + $next.outerHeight(false);\n      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextBottom > currentOffset) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      params.element[0].classList.add('select2-results__option--highlighted');\n      params.element[0].setAttribute('aria-selected', 'true');\n    });\n\n    container.on('results:message', function (params) {\n      self.displayMessage(params);\n    });\n\n    if ($.fn.mousewheel) {\n      this.$results.on('mousewheel', function (e) {\n        var top = self.$results.scrollTop();\n\n        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n        if (isAtTop) {\n          self.$results.scrollTop(0);\n\n          e.preventDefault();\n          e.stopPropagation();\n        } else if (isAtBottom) {\n          self.$results.scrollTop(\n            self.$results.get(0).scrollHeight - self.$results.height()\n          );\n\n          e.preventDefault();\n          e.stopPropagation();\n        }\n      });\n    }\n\n    this.$results.on('mouseup', '.select2-results__option--selectable',\n      function (evt) {\n      var $this = $(this);\n\n      var data = Utils.GetData(this, 'data');\n\n      if ($this.hasClass('select2-results__option--selected')) {\n        if (self.options.get('multiple')) {\n          self.trigger('unselect', {\n            originalEvent: evt,\n            data: data\n          });\n        } else {\n          self.trigger('close', {});\n        }\n\n        return;\n      }\n\n      self.trigger('select', {\n        originalEvent: evt,\n        data: data\n      });\n    });\n\n    this.$results.on('mouseenter', '.select2-results__option--selectable',\n      function (evt) {\n      var data = Utils.GetData(this, 'data');\n\n      self.getHighlightedResults()\n          .removeClass('select2-results__option--highlighted')\n          .attr('aria-selected', 'false');\n\n      self.trigger('results:focus', {\n        data: data,\n        element: $(this)\n      });\n    });\n  };\n\n  Results.prototype.getHighlightedResults = function () {\n    var $highlighted = this.$results\n    .find('.select2-results__option--highlighted');\n\n    return $highlighted;\n  };\n\n  Results.prototype.destroy = function () {\n    this.$results.remove();\n  };\n\n  Results.prototype.ensureHighlightVisible = function () {\n    var $highlighted = this.getHighlightedResults();\n\n    if ($highlighted.length === 0) {\n      return;\n    }\n\n    var $options = this.$results.find('.select2-results__option--selectable');\n\n    var currentIndex = $options.index($highlighted);\n\n    var currentOffset = this.$results.offset().top;\n    var nextTop = $highlighted.offset().top;\n    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n    var offsetDelta = nextTop - currentOffset;\n    nextOffset -= $highlighted.outerHeight(false) * 2;\n\n    if (currentIndex <= 2) {\n      this.$results.scrollTop(0);\n    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n      this.$results.scrollTop(nextOffset);\n    }\n  };\n\n  Results.prototype.template = function (result, container) {\n    var template = this.options.get('templateResult');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    var content = template(result, container);\n\n    if (content == null) {\n      container.style.display = 'none';\n    } else if (typeof content === 'string') {\n      container.innerHTML = escapeMarkup(content);\n    } else {\n      $(container).append(content);\n    }\n  };\n\n  return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n  var KEYS = {\n    BACKSPACE: 8,\n    TAB: 9,\n    ENTER: 13,\n    SHIFT: 16,\n    CTRL: 17,\n    ALT: 18,\n    ESC: 27,\n    SPACE: 32,\n    PAGE_UP: 33,\n    PAGE_DOWN: 34,\n    END: 35,\n    HOME: 36,\n    LEFT: 37,\n    UP: 38,\n    RIGHT: 39,\n    DOWN: 40,\n    DELETE: 46\n  };\n\n  return KEYS;\n});\n\nS2.define('select2/selection/base',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function BaseSelection ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    BaseSelection.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseSelection, Utils.Observable);\n\n  BaseSelection.prototype.render = function () {\n    var $selection = $(\n      '<span class=\"select2-selection\" role=\"combobox\" ' +\n      ' aria-haspopup=\"true\" aria-expanded=\"false\">' +\n      '</span>'\n    );\n\n    this._tabindex = 0;\n\n    if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n      this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n    } else if (this.$element.attr('tabindex') != null) {\n      this._tabindex = this.$element.attr('tabindex');\n    }\n\n    $selection.attr('title', this.$element.attr('title'));\n    $selection.attr('tabindex', this._tabindex);\n    $selection.attr('aria-disabled', 'false');\n\n    this.$selection = $selection;\n\n    return $selection;\n  };\n\n  BaseSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    this.container = container;\n\n    this.$selection.on('focus', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('blur', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      if (evt.which === KEYS.SPACE) {\n        evt.preventDefault();\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      self.$selection.attr('aria-activedescendant', params.data._resultId);\n    });\n\n    container.on('selection:update', function (params) {\n      self.update(params.data);\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expanded=\"true\"\n      self.$selection.attr('aria-expanded', 'true');\n      self.$selection.attr('aria-owns', resultsId);\n\n      self._attachCloseHandler(container);\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expanded=\"false\"\n      self.$selection.attr('aria-expanded', 'false');\n      self.$selection.removeAttr('aria-activedescendant');\n      self.$selection.removeAttr('aria-owns');\n\n      self.$selection.trigger('focus');\n\n      self._detachCloseHandler(container);\n    });\n\n    container.on('enable', function () {\n      self.$selection.attr('tabindex', self._tabindex);\n      self.$selection.attr('aria-disabled', 'false');\n    });\n\n    container.on('disable', function () {\n      self.$selection.attr('tabindex', '-1');\n      self.$selection.attr('aria-disabled', 'true');\n    });\n  };\n\n  BaseSelection.prototype._handleBlur = function (evt) {\n    var self = this;\n\n    // This needs to be delayed as the active element is the body when the tab\n    // key is pressed, possibly along with others.\n    window.setTimeout(function () {\n      // Don't trigger `blur` if the focus is still in the selection\n      if (\n        (document.activeElement == self.$selection[0]) ||\n        ($.contains(self.$selection[0], document.activeElement))\n      ) {\n        return;\n      }\n\n      self.trigger('blur', evt);\n    }, 1);\n  };\n\n  BaseSelection.prototype._attachCloseHandler = function (container) {\n\n    $(document.body).on('mousedown.select2.' + container.id, function (e) {\n      var $target = $(e.target);\n\n      var $select = $target.closest('.select2');\n\n      var $all = $('.select2.select2-container--open');\n\n      $all.each(function () {\n        if (this == $select[0]) {\n          return;\n        }\n\n        var $element = Utils.GetData(this, 'element');\n\n        $element.select2('close');\n      });\n    });\n  };\n\n  BaseSelection.prototype._detachCloseHandler = function (container) {\n    $(document.body).off('mousedown.select2.' + container.id);\n  };\n\n  BaseSelection.prototype.position = function ($selection, $container) {\n    var $selectionContainer = $container.find('.selection');\n    $selectionContainer.append($selection);\n  };\n\n  BaseSelection.prototype.destroy = function () {\n    this._detachCloseHandler(this.container);\n  };\n\n  BaseSelection.prototype.update = function (data) {\n    throw new Error('The `update` method must be defined in child classes.');\n  };\n\n  /**\n   * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n   * object.\n   *\n   * @return {true} if the instance is not disabled.\n   * @return {false} if the instance is disabled.\n   */\n  BaseSelection.prototype.isEnabled = function () {\n    return !this.isDisabled();\n  };\n\n  /**\n   * Helper method to abstract the \"disabled\" state of this object.\n   *\n   * @return {true} if the disabled option is true.\n   * @return {false} if the disabled option is false.\n   */\n  BaseSelection.prototype.isDisabled = function () {\n    return this.options.get('disabled');\n  };\n\n  return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n  'jquery',\n  './base',\n  '../utils',\n  '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n  function SingleSelection () {\n    SingleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(SingleSelection, BaseSelection);\n\n  SingleSelection.prototype.render = function () {\n    var $selection = SingleSelection.__super__.render.call(this);\n\n    $selection[0].classList.add('select2-selection--single');\n\n    $selection.html(\n      '<span class=\"select2-selection__rendered\"></span>' +\n      '<span class=\"select2-selection__arrow\" role=\"presentation\">' +\n        '<b role=\"presentation\"></b>' +\n      '</span>'\n    );\n\n    return $selection;\n  };\n\n  SingleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    SingleSelection.__super__.bind.apply(this, arguments);\n\n    var id = container.id + '-container';\n\n    this.$selection.find('.select2-selection__rendered')\n      .attr('id', id)\n      .attr('role', 'textbox')\n      .attr('aria-readonly', 'true');\n    this.$selection.attr('aria-labelledby', id);\n    this.$selection.attr('aria-controls', id);\n\n    this.$selection.on('mousedown', function (evt) {\n      // Only respond to left clicks\n      if (evt.which !== 1) {\n        return;\n      }\n\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on('focus', function (evt) {\n      // User focuses on the container\n    });\n\n    this.$selection.on('blur', function (evt) {\n      // User exits the container\n    });\n\n    container.on('focus', function (evt) {\n      if (!container.isOpen()) {\n        self.$selection.trigger('focus');\n      }\n    });\n  };\n\n  SingleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title'); // clear tooltip on empty\n  };\n\n  SingleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  SingleSelection.prototype.selectionContainer = function () {\n    return $('<span></span>');\n  };\n\n  SingleSelection.prototype.update = function (data) {\n    if (data.length === 0) {\n      this.clear();\n      return;\n    }\n\n    var selection = data[0];\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    var formatted = this.display(selection, $rendered);\n\n    $rendered.empty().append(formatted);\n\n    var title = selection.title || selection.text;\n\n    if (title) {\n      $rendered.attr('title', title);\n    } else {\n      $rendered.removeAttr('title');\n    }\n  };\n\n  return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n  'jquery',\n  './base',\n  '../utils'\n], function ($, BaseSelection, Utils) {\n  function MultipleSelection ($element, options) {\n    MultipleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(MultipleSelection, BaseSelection);\n\n  MultipleSelection.prototype.render = function () {\n    var $selection = MultipleSelection.__super__.render.call(this);\n\n    $selection[0].classList.add('select2-selection--multiple');\n\n    $selection.html(\n      '<ul class=\"select2-selection__rendered\"></ul>'\n    );\n\n    return $selection;\n  };\n\n  MultipleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    MultipleSelection.__super__.bind.apply(this, arguments);\n\n    var id = container.id + '-container';\n    this.$selection.find('.select2-selection__rendered').attr('id', id);\n\n    this.$selection.on('click', function (evt) {\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on(\n      'click',\n      '.select2-selection__choice__remove',\n      function (evt) {\n        // Ignore the event if it is disabled\n        if (self.isDisabled()) {\n          return;\n        }\n\n        var $remove = $(this);\n        var $selection = $remove.parent();\n\n        var data = Utils.GetData($selection[0], 'data');\n\n        self.trigger('unselect', {\n          originalEvent: evt,\n          data: data\n        });\n      }\n    );\n\n    this.$selection.on(\n      'keydown',\n      '.select2-selection__choice__remove',\n      function (evt) {\n        // Ignore the event if it is disabled\n        if (self.isDisabled()) {\n          return;\n        }\n\n        evt.stopPropagation();\n      }\n    );\n  };\n\n  MultipleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title');\n  };\n\n  MultipleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  MultipleSelection.prototype.selectionContainer = function () {\n    var $container = $(\n      '<li class=\"select2-selection__choice\">' +\n        '<button type=\"button\" class=\"select2-selection__choice__remove\" ' +\n        'tabindex=\"-1\">' +\n          '<span aria-hidden=\"true\">&times;</span>' +\n        '</button>' +\n        '<span class=\"select2-selection__choice__display\"></span>' +\n      '</li>'\n    );\n\n    return $container;\n  };\n\n  MultipleSelection.prototype.update = function (data) {\n    this.clear();\n\n    if (data.length === 0) {\n      return;\n    }\n\n    var $selections = [];\n\n    var selectionIdPrefix = this.$selection.find('.select2-selection__rendered')\n      .attr('id') + '-choice-';\n\n    for (var d = 0; d < data.length; d++) {\n      var selection = data[d];\n\n      var $selection = this.selectionContainer();\n      var formatted = this.display(selection, $selection);\n\n      var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';\n\n      if (selection.id) {\n        selectionId += selection.id;\n      } else {\n        selectionId += Utils.generateChars(4);\n      }\n\n      $selection.find('.select2-selection__choice__display')\n        .append(formatted)\n        .attr('id', selectionId);\n\n      var title = selection.title || selection.text;\n\n      if (title) {\n        $selection.attr('title', title);\n      }\n\n      var removeItem = this.options.get('translations').get('removeItem');\n\n      var $remove = $selection.find('.select2-selection__choice__remove');\n\n      $remove.attr('title', removeItem());\n      $remove.attr('aria-label', removeItem());\n      $remove.attr('aria-describedby', selectionId);\n\n      Utils.StoreData($selection[0], 'data', selection);\n\n      $selections.push($selection);\n    }\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n\n    $rendered.append($selections);\n  };\n\n  return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n\n], function () {\n  function Placeholder (decorated, $element, options) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options);\n  }\n\n  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n    var $placeholder = this.selectionContainer();\n\n    $placeholder.html(this.display(placeholder));\n    $placeholder[0].classList.add('select2-selection__placeholder');\n    $placeholder[0].classList.remove('select2-selection__choice');\n\n    var placeholderTitle = placeholder.title ||\n      placeholder.text ||\n      $placeholder.text();\n\n    this.$selection.find('.select2-selection__rendered').attr(\n      'title',\n      placeholderTitle\n    );\n\n    return $placeholder;\n  };\n\n  Placeholder.prototype.update = function (decorated, data) {\n    var singlePlaceholder = (\n      data.length == 1 && data[0].id != this.placeholder.id\n    );\n    var multipleSelections = data.length > 1;\n\n    if (multipleSelections || singlePlaceholder) {\n      return decorated.call(this, data);\n    }\n\n    this.clear();\n\n    var $placeholder = this.createPlaceholder(this.placeholder);\n\n    this.$selection.find('.select2-selection__rendered').append($placeholder);\n  };\n\n  return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n  'jquery',\n  '../keys',\n  '../utils'\n], function ($, KEYS, Utils) {\n  function AllowClear () { }\n\n  AllowClear.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    if (this.placeholder == null) {\n      if (this.options.get('debug') && window.console && console.error) {\n        console.error(\n          'Select2: The `allowClear` option should be used in combination ' +\n          'with the `placeholder` option.'\n        );\n      }\n    }\n\n    this.$selection.on('mousedown', '.select2-selection__clear',\n      function (evt) {\n        self._handleClear(evt);\n    });\n\n    container.on('keypress', function (evt) {\n      self._handleKeyboardClear(evt, container);\n    });\n  };\n\n  AllowClear.prototype._handleClear = function (_, evt) {\n    // Ignore the event if it is disabled\n    if (this.isDisabled()) {\n      return;\n    }\n\n    var $clear = this.$selection.find('.select2-selection__clear');\n\n    // Ignore the event if nothing has been selected\n    if ($clear.length === 0) {\n      return;\n    }\n\n    evt.stopPropagation();\n\n    var data = Utils.GetData($clear[0], 'data');\n\n    var previousVal = this.$element.val();\n    this.$element.val(this.placeholder.id);\n\n    var unselectData = {\n      data: data\n    };\n    this.trigger('clear', unselectData);\n    if (unselectData.prevented) {\n      this.$element.val(previousVal);\n      return;\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      unselectData = {\n        data: data[d]\n      };\n\n      // Trigger the `unselect` event, so people can prevent it from being\n      // cleared.\n      this.trigger('unselect', unselectData);\n\n      // If the event was prevented, don't clear it out.\n      if (unselectData.prevented) {\n        this.$element.val(previousVal);\n        return;\n      }\n    }\n\n    this.$element.trigger('input').trigger('change');\n\n    this.trigger('toggle', {});\n  };\n\n  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n    if (container.isOpen()) {\n      return;\n    }\n\n    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n      this._handleClear(evt);\n    }\n  };\n\n  AllowClear.prototype.update = function (decorated, data) {\n    decorated.call(this, data);\n\n    this.$selection.find('.select2-selection__clear').remove();\n    this.$selection[0].classList.remove('select2-selection--clearable');\n\n    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n        data.length === 0) {\n      return;\n    }\n\n    var selectionId = this.$selection.find('.select2-selection__rendered')\n      .attr('id');\n\n    var removeAll = this.options.get('translations').get('removeAllItems');\n\n    var $remove = $(\n      '<button type=\"button\" class=\"select2-selection__clear\" tabindex=\"-1\">' +\n        '<span aria-hidden=\"true\">&times;</span>' +\n      '</button>'\n    );\n    $remove.attr('title', removeAll());\n    $remove.attr('aria-label', removeAll());\n    $remove.attr('aria-describedby', selectionId);\n    Utils.StoreData($remove[0], 'data', data);\n\n    this.$selection.prepend($remove);\n    this.$selection[0].classList.add('select2-selection--clearable');\n  };\n\n  return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function Search (decorated, $element, options) {\n    decorated.call(this, $element, options);\n  }\n\n  Search.prototype.render = function (decorated) {\n    var searchLabel = this.options.get('translations').get('search');\n    var $search = $(\n      '<span class=\"select2-search select2-search--inline\">' +\n        '<textarea class=\"select2-search__field\"'+\n        ' type=\"search\" tabindex=\"-1\"' +\n        ' autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" >' +\n        '</textarea>' +\n      '</span>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('textarea');\n\n    this.$search.prop('autocomplete', this.options.get('autocomplete'));\n    this.$search.attr('aria-label', searchLabel());\n\n    var $rendered = decorated.call(this);\n\n    this._transferTabIndex();\n    $rendered.append(this.$searchContainer);\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n    var selectionId = container.id + '-container';\n\n    decorated.call(this, container, $container);\n\n    self.$search.attr('aria-describedby', selectionId);\n\n    container.on('open', function () {\n      self.$search.attr('aria-controls', resultsId);\n      self.$search.trigger('focus');\n    });\n\n    container.on('close', function () {\n      self.$search.val('');\n      self.resizeSearch();\n      self.$search.removeAttr('aria-controls');\n      self.$search.removeAttr('aria-activedescendant');\n      self.$search.trigger('focus');\n    });\n\n    container.on('enable', function () {\n      self.$search.prop('disabled', false);\n\n      self._transferTabIndex();\n    });\n\n    container.on('disable', function () {\n      self.$search.prop('disabled', true);\n    });\n\n    container.on('focus', function (evt) {\n      self.$search.trigger('focus');\n    });\n\n    container.on('results:focus', function (params) {\n      if (params.data._resultId) {\n        self.$search.attr('aria-activedescendant', params.data._resultId);\n      } else {\n        self.$search.removeAttr('aria-activedescendant');\n      }\n    });\n\n    this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n      evt.stopPropagation();\n\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n\n      var key = evt.which;\n\n      if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n        var $previousChoice = self.$selection\n          .find('.select2-selection__choice').last();\n\n        if ($previousChoice.length > 0) {\n          var item = Utils.GetData($previousChoice[0], 'data');\n\n          self.searchRemoveChoice(item);\n\n          evt.preventDefault();\n        }\n      }\n    });\n\n    this.$selection.on('click', '.select2-search--inline', function (evt) {\n      if (self.$search.val()) {\n        evt.stopPropagation();\n      }\n    });\n\n    // Try to detect the IE version should the `documentMode` property that\n    // is stored on the document. This is only implemented in IE and is\n    // slightly cleaner than doing a user agent check.\n    // This property is not available in Edge, but Edge also doesn't have\n    // this bug.\n    var msie = document.documentMode;\n    var disableInputEvents = msie && msie <= 11;\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$selection.on(\n      'input.searchcheck',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents) {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        // Unbind the duplicated `keyup` event\n        self.$selection.off('keyup.search');\n      }\n    );\n\n    this.$selection.on(\n      'keyup.search input.search',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents && evt.type === 'input') {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        var key = evt.which;\n\n        // We can freely ignore events from modifier keys\n        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n          return;\n        }\n\n        // Tabbing will be handled during the `keydown` phase\n        if (key == KEYS.TAB) {\n          return;\n        }\n\n        self.handleSearch(evt);\n      }\n    );\n  };\n\n  /**\n   * This method will transfer the tabindex attribute from the rendered\n   * selection to the search box. This allows for the search box to be used as\n   * the primary focus instead of the selection container.\n   *\n   * @private\n   */\n  Search.prototype._transferTabIndex = function (decorated) {\n    this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n    this.$selection.attr('tabindex', '-1');\n  };\n\n  Search.prototype.createPlaceholder = function (decorated, placeholder) {\n    this.$search.attr('placeholder', placeholder.text);\n  };\n\n  Search.prototype.update = function (decorated, data) {\n    var searchHadFocus = this.$search[0] == document.activeElement;\n\n    this.$search.attr('placeholder', '');\n\n    decorated.call(this, data);\n\n    this.resizeSearch();\n    if (searchHadFocus) {\n      this.$search.trigger('focus');\n    }\n  };\n\n  Search.prototype.handleSearch = function () {\n    this.resizeSearch();\n\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.searchRemoveChoice = function (decorated, item) {\n    this.trigger('unselect', {\n      data: item\n    });\n\n    this.$search.val(item.text);\n    this.handleSearch();\n  };\n\n  Search.prototype.resizeSearch = function () {\n    this.$search.css('width', '25px');\n\n    var width = '100%';\n\n    if (this.$search.attr('placeholder') === '') {\n      var minimumWidth = this.$search.val().length + 1;\n\n      width = (minimumWidth * 0.75) + 'em';\n    }\n\n    this.$search.css('width', width);\n  };\n\n  return Search;\n});\n\nS2.define('select2/selection/selectionCss',[\n  '../utils'\n], function (Utils) {\n  function SelectionCSS () { }\n\n  SelectionCSS.prototype.render = function (decorated) {\n    var $selection = decorated.call(this);\n\n    var selectionCssClass = this.options.get('selectionCssClass') || '';\n\n    if (selectionCssClass.indexOf(':all:') !== -1) {\n      selectionCssClass = selectionCssClass.replace(':all:', '');\n\n      Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);\n    }\n\n    $selection.addClass(selectionCssClass);\n\n    return $selection;\n  };\n\n  return SelectionCSS;\n});\n\nS2.define('select2/selection/eventRelay',[\n  'jquery'\n], function ($) {\n  function EventRelay () { }\n\n  EventRelay.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n    var relayEvents = [\n      'open', 'opening',\n      'close', 'closing',\n      'select', 'selecting',\n      'unselect', 'unselecting',\n      'clear', 'clearing'\n    ];\n\n    var preventableEvents = [\n      'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n    ];\n\n    decorated.call(this, container, $container);\n\n    container.on('*', function (name, params) {\n      // Ignore events that should not be relayed\n      if (relayEvents.indexOf(name) === -1) {\n        return;\n      }\n\n      // The parameters should always be an object\n      params = params || {};\n\n      // Generate the jQuery event for the Select2 event\n      var evt = $.Event('select2:' + name, {\n        params: params\n      });\n\n      self.$element.trigger(evt);\n\n      // Only handle preventable events if it was one\n      if (preventableEvents.indexOf(name) === -1) {\n        return;\n      }\n\n      params.prevented = evt.isDefaultPrevented();\n    });\n  };\n\n  return EventRelay;\n});\n\nS2.define('select2/translation',[\n  'jquery',\n  'require'\n], function ($, require) {\n  function Translation (dict) {\n    this.dict = dict || {};\n  }\n\n  Translation.prototype.all = function () {\n    return this.dict;\n  };\n\n  Translation.prototype.get = function (key) {\n    return this.dict[key];\n  };\n\n  Translation.prototype.extend = function (translation) {\n    this.dict = $.extend({}, translation.all(), this.dict);\n  };\n\n  // Static functions\n\n  Translation._cache = {};\n\n  Translation.loadPath = function (path) {\n    if (!(path in Translation._cache)) {\n      var translations = require(path);\n\n      Translation._cache[path] = translations;\n    }\n\n    return new Translation(Translation._cache[path]);\n  };\n\n  return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n  var diacritics = {\n    '\\u24B6': 'A',\n    '\\uFF21': 'A',\n    '\\u00C0': 'A',\n    '\\u00C1': 'A',\n    '\\u00C2': 'A',\n    '\\u1EA6': 'A',\n    '\\u1EA4': 'A',\n    '\\u1EAA': 'A',\n    '\\u1EA8': 'A',\n    '\\u00C3': 'A',\n    '\\u0100': 'A',\n    '\\u0102': 'A',\n    '\\u1EB0': 'A',\n    '\\u1EAE': 'A',\n    '\\u1EB4': 'A',\n    '\\u1EB2': 'A',\n    '\\u0226': 'A',\n    '\\u01E0': 'A',\n    '\\u00C4': 'A',\n    '\\u01DE': 'A',\n    '\\u1EA2': 'A',\n    '\\u00C5': 'A',\n    '\\u01FA': 'A',\n    '\\u01CD': 'A',\n    '\\u0200': 'A',\n    '\\u0202': 'A',\n    '\\u1EA0': 'A',\n    '\\u1EAC': 'A',\n    '\\u1EB6': 'A',\n    '\\u1E00': 'A',\n    '\\u0104': 'A',\n    '\\u023A': 'A',\n    '\\u2C6F': 'A',\n    '\\uA732': 'AA',\n    '\\u00C6': 'AE',\n    '\\u01FC': 'AE',\n    '\\u01E2': 'AE',\n    '\\uA734': 'AO',\n    '\\uA736': 'AU',\n    '\\uA738': 'AV',\n    '\\uA73A': 'AV',\n    '\\uA73C': 'AY',\n    '\\u24B7': 'B',\n    '\\uFF22': 'B',\n    '\\u1E02': 'B',\n    '\\u1E04': 'B',\n    '\\u1E06': 'B',\n    '\\u0243': 'B',\n    '\\u0182': 'B',\n    '\\u0181': 'B',\n    '\\u24B8': 'C',\n    '\\uFF23': 'C',\n    '\\u0106': 'C',\n    '\\u0108': 'C',\n    '\\u010A': 'C',\n    '\\u010C': 'C',\n    '\\u00C7': 'C',\n    '\\u1E08': 'C',\n    '\\u0187': 'C',\n    '\\u023B': 'C',\n    '\\uA73E': 'C',\n    '\\u24B9': 'D',\n    '\\uFF24': 'D',\n    '\\u1E0A': 'D',\n    '\\u010E': 'D',\n    '\\u1E0C': 'D',\n    '\\u1E10': 'D',\n    '\\u1E12': 'D',\n    '\\u1E0E': 'D',\n    '\\u0110': 'D',\n    '\\u018B': 'D',\n    '\\u018A': 'D',\n    '\\u0189': 'D',\n    '\\uA779': 'D',\n    '\\u01F1': 'DZ',\n    '\\u01C4': 'DZ',\n    '\\u01F2': 'Dz',\n    '\\u01C5': 'Dz',\n    '\\u24BA': 'E',\n    '\\uFF25': 'E',\n    '\\u00C8': 'E',\n    '\\u00C9': 'E',\n    '\\u00CA': 'E',\n    '\\u1EC0': 'E',\n    '\\u1EBE': 'E',\n    '\\u1EC4': 'E',\n    '\\u1EC2': 'E',\n    '\\u1EBC': 'E',\n    '\\u0112': 'E',\n    '\\u1E14': 'E',\n    '\\u1E16': 'E',\n    '\\u0114': 'E',\n    '\\u0116': 'E',\n    '\\u00CB': 'E',\n    '\\u1EBA': 'E',\n    '\\u011A': 'E',\n    '\\u0204': 'E',\n    '\\u0206': 'E',\n    '\\u1EB8': 'E',\n    '\\u1EC6': 'E',\n    '\\u0228': 'E',\n    '\\u1E1C': 'E',\n    '\\u0118': 'E',\n    '\\u1E18': 'E',\n    '\\u1E1A': 'E',\n    '\\u0190': 'E',\n    '\\u018E': 'E',\n    '\\u24BB': 'F',\n    '\\uFF26': 'F',\n    '\\u1E1E': 'F',\n    '\\u0191': 'F',\n    '\\uA77B': 'F',\n    '\\u24BC': 'G',\n    '\\uFF27': 'G',\n    '\\u01F4': 'G',\n    '\\u011C': 'G',\n    '\\u1E20': 'G',\n    '\\u011E': 'G',\n    '\\u0120': 'G',\n    '\\u01E6': 'G',\n    '\\u0122': 'G',\n    '\\u01E4': 'G',\n    '\\u0193': 'G',\n    '\\uA7A0': 'G',\n    '\\uA77D': 'G',\n    '\\uA77E': 'G',\n    '\\u24BD': 'H',\n    '\\uFF28': 'H',\n    '\\u0124': 'H',\n    '\\u1E22': 'H',\n    '\\u1E26': 'H',\n    '\\u021E': 'H',\n    '\\u1E24': 'H',\n    '\\u1E28': 'H',\n    '\\u1E2A': 'H',\n    '\\u0126': 'H',\n    '\\u2C67': 'H',\n    '\\u2C75': 'H',\n    '\\uA78D': 'H',\n    '\\u24BE': 'I',\n    '\\uFF29': 'I',\n    '\\u00CC': 'I',\n    '\\u00CD': 'I',\n    '\\u00CE': 'I',\n    '\\u0128': 'I',\n    '\\u012A': 'I',\n    '\\u012C': 'I',\n    '\\u0130': 'I',\n    '\\u00CF': 'I',\n    '\\u1E2E': 'I',\n    '\\u1EC8': 'I',\n    '\\u01CF': 'I',\n    '\\u0208': 'I',\n    '\\u020A': 'I',\n    '\\u1ECA': 'I',\n    '\\u012E': 'I',\n    '\\u1E2C': 'I',\n    '\\u0197': 'I',\n    '\\u24BF': 'J',\n    '\\uFF2A': 'J',\n    '\\u0134': 'J',\n    '\\u0248': 'J',\n    '\\u24C0': 'K',\n    '\\uFF2B': 'K',\n    '\\u1E30': 'K',\n    '\\u01E8': 'K',\n    '\\u1E32': 'K',\n    '\\u0136': 'K',\n    '\\u1E34': 'K',\n    '\\u0198': 'K',\n    '\\u2C69': 'K',\n    '\\uA740': 'K',\n    '\\uA742': 'K',\n    '\\uA744': 'K',\n    '\\uA7A2': 'K',\n    '\\u24C1': 'L',\n    '\\uFF2C': 'L',\n    '\\u013F': 'L',\n    '\\u0139': 'L',\n    '\\u013D': 'L',\n    '\\u1E36': 'L',\n    '\\u1E38': 'L',\n    '\\u013B': 'L',\n    '\\u1E3C': 'L',\n    '\\u1E3A': 'L',\n    '\\u0141': 'L',\n    '\\u023D': 'L',\n    '\\u2C62': 'L',\n    '\\u2C60': 'L',\n    '\\uA748': 'L',\n    '\\uA746': 'L',\n    '\\uA780': 'L',\n    '\\u01C7': 'LJ',\n    '\\u01C8': 'Lj',\n    '\\u24C2': 'M',\n    '\\uFF2D': 'M',\n    '\\u1E3E': 'M',\n    '\\u1E40': 'M',\n    '\\u1E42': 'M',\n    '\\u2C6E': 'M',\n    '\\u019C': 'M',\n    '\\u24C3': 'N',\n    '\\uFF2E': 'N',\n    '\\u01F8': 'N',\n    '\\u0143': 'N',\n    '\\u00D1': 'N',\n    '\\u1E44': 'N',\n    '\\u0147': 'N',\n    '\\u1E46': 'N',\n    '\\u0145': 'N',\n    '\\u1E4A': 'N',\n    '\\u1E48': 'N',\n    '\\u0220': 'N',\n    '\\u019D': 'N',\n    '\\uA790': 'N',\n    '\\uA7A4': 'N',\n    '\\u01CA': 'NJ',\n    '\\u01CB': 'Nj',\n    '\\u24C4': 'O',\n    '\\uFF2F': 'O',\n    '\\u00D2': 'O',\n    '\\u00D3': 'O',\n    '\\u00D4': 'O',\n    '\\u1ED2': 'O',\n    '\\u1ED0': 'O',\n    '\\u1ED6': 'O',\n    '\\u1ED4': 'O',\n    '\\u00D5': 'O',\n    '\\u1E4C': 'O',\n    '\\u022C': 'O',\n    '\\u1E4E': 'O',\n    '\\u014C': 'O',\n    '\\u1E50': 'O',\n    '\\u1E52': 'O',\n    '\\u014E': 'O',\n    '\\u022E': 'O',\n    '\\u0230': 'O',\n    '\\u00D6': 'O',\n    '\\u022A': 'O',\n    '\\u1ECE': 'O',\n    '\\u0150': 'O',\n    '\\u01D1': 'O',\n    '\\u020C': 'O',\n    '\\u020E': 'O',\n    '\\u01A0': 'O',\n    '\\u1EDC': 'O',\n    '\\u1EDA': 'O',\n    '\\u1EE0': 'O',\n    '\\u1EDE': 'O',\n    '\\u1EE2': 'O',\n    '\\u1ECC': 'O',\n    '\\u1ED8': 'O',\n    '\\u01EA': 'O',\n    '\\u01EC': 'O',\n    '\\u00D8': 'O',\n    '\\u01FE': 'O',\n    '\\u0186': 'O',\n    '\\u019F': 'O',\n    '\\uA74A': 'O',\n    '\\uA74C': 'O',\n    '\\u0152': 'OE',\n    '\\u01A2': 'OI',\n    '\\uA74E': 'OO',\n    '\\u0222': 'OU',\n    '\\u24C5': 'P',\n    '\\uFF30': 'P',\n    '\\u1E54': 'P',\n    '\\u1E56': 'P',\n    '\\u01A4': 'P',\n    '\\u2C63': 'P',\n    '\\uA750': 'P',\n    '\\uA752': 'P',\n    '\\uA754': 'P',\n    '\\u24C6': 'Q',\n    '\\uFF31': 'Q',\n    '\\uA756': 'Q',\n    '\\uA758': 'Q',\n    '\\u024A': 'Q',\n    '\\u24C7': 'R',\n    '\\uFF32': 'R',\n    '\\u0154': 'R',\n    '\\u1E58': 'R',\n    '\\u0158': 'R',\n    '\\u0210': 'R',\n    '\\u0212': 'R',\n    '\\u1E5A': 'R',\n    '\\u1E5C': 'R',\n    '\\u0156': 'R',\n    '\\u1E5E': 'R',\n    '\\u024C': 'R',\n    '\\u2C64': 'R',\n    '\\uA75A': 'R',\n    '\\uA7A6': 'R',\n    '\\uA782': 'R',\n    '\\u24C8': 'S',\n    '\\uFF33': 'S',\n    '\\u1E9E': 'S',\n    '\\u015A': 'S',\n    '\\u1E64': 'S',\n    '\\u015C': 'S',\n    '\\u1E60': 'S',\n    '\\u0160': 'S',\n    '\\u1E66': 'S',\n    '\\u1E62': 'S',\n    '\\u1E68': 'S',\n    '\\u0218': 'S',\n    '\\u015E': 'S',\n    '\\u2C7E': 'S',\n    '\\uA7A8': 'S',\n    '\\uA784': 'S',\n    '\\u24C9': 'T',\n    '\\uFF34': 'T',\n    '\\u1E6A': 'T',\n    '\\u0164': 'T',\n    '\\u1E6C': 'T',\n    '\\u021A': 'T',\n    '\\u0162': 'T',\n    '\\u1E70': 'T',\n    '\\u1E6E': 'T',\n    '\\u0166': 'T',\n    '\\u01AC': 'T',\n    '\\u01AE': 'T',\n    '\\u023E': 'T',\n    '\\uA786': 'T',\n    '\\uA728': 'TZ',\n    '\\u24CA': 'U',\n    '\\uFF35': 'U',\n    '\\u00D9': 'U',\n    '\\u00DA': 'U',\n    '\\u00DB': 'U',\n    '\\u0168': 'U',\n    '\\u1E78': 'U',\n    '\\u016A': 'U',\n    '\\u1E7A': 'U',\n    '\\u016C': 'U',\n    '\\u00DC': 'U',\n    '\\u01DB': 'U',\n    '\\u01D7': 'U',\n    '\\u01D5': 'U',\n    '\\u01D9': 'U',\n    '\\u1EE6': 'U',\n    '\\u016E': 'U',\n    '\\u0170': 'U',\n    '\\u01D3': 'U',\n    '\\u0214': 'U',\n    '\\u0216': 'U',\n    '\\u01AF': 'U',\n    '\\u1EEA': 'U',\n    '\\u1EE8': 'U',\n    '\\u1EEE': 'U',\n    '\\u1EEC': 'U',\n    '\\u1EF0': 'U',\n    '\\u1EE4': 'U',\n    '\\u1E72': 'U',\n    '\\u0172': 'U',\n    '\\u1E76': 'U',\n    '\\u1E74': 'U',\n    '\\u0244': 'U',\n    '\\u24CB': 'V',\n    '\\uFF36': 'V',\n    '\\u1E7C': 'V',\n    '\\u1E7E': 'V',\n    '\\u01B2': 'V',\n    '\\uA75E': 'V',\n    '\\u0245': 'V',\n    '\\uA760': 'VY',\n    '\\u24CC': 'W',\n    '\\uFF37': 'W',\n    '\\u1E80': 'W',\n    '\\u1E82': 'W',\n    '\\u0174': 'W',\n    '\\u1E86': 'W',\n    '\\u1E84': 'W',\n    '\\u1E88': 'W',\n    '\\u2C72': 'W',\n    '\\u24CD': 'X',\n    '\\uFF38': 'X',\n    '\\u1E8A': 'X',\n    '\\u1E8C': 'X',\n    '\\u24CE': 'Y',\n    '\\uFF39': 'Y',\n    '\\u1EF2': 'Y',\n    '\\u00DD': 'Y',\n    '\\u0176': 'Y',\n    '\\u1EF8': 'Y',\n    '\\u0232': 'Y',\n    '\\u1E8E': 'Y',\n    '\\u0178': 'Y',\n    '\\u1EF6': 'Y',\n    '\\u1EF4': 'Y',\n    '\\u01B3': 'Y',\n    '\\u024E': 'Y',\n    '\\u1EFE': 'Y',\n    '\\u24CF': 'Z',\n    '\\uFF3A': 'Z',\n    '\\u0179': 'Z',\n    '\\u1E90': 'Z',\n    '\\u017B': 'Z',\n    '\\u017D': 'Z',\n    '\\u1E92': 'Z',\n    '\\u1E94': 'Z',\n    '\\u01B5': 'Z',\n    '\\u0224': 'Z',\n    '\\u2C7F': 'Z',\n    '\\u2C6B': 'Z',\n    '\\uA762': 'Z',\n    '\\u24D0': 'a',\n    '\\uFF41': 'a',\n    '\\u1E9A': 'a',\n    '\\u00E0': 'a',\n    '\\u00E1': 'a',\n    '\\u00E2': 'a',\n    '\\u1EA7': 'a',\n    '\\u1EA5': 'a',\n    '\\u1EAB': 'a',\n    '\\u1EA9': 'a',\n    '\\u00E3': 'a',\n    '\\u0101': 'a',\n    '\\u0103': 'a',\n    '\\u1EB1': 'a',\n    '\\u1EAF': 'a',\n    '\\u1EB5': 'a',\n    '\\u1EB3': 'a',\n    '\\u0227': 'a',\n    '\\u01E1': 'a',\n    '\\u00E4': 'a',\n    '\\u01DF': 'a',\n    '\\u1EA3': 'a',\n    '\\u00E5': 'a',\n    '\\u01FB': 'a',\n    '\\u01CE': 'a',\n    '\\u0201': 'a',\n    '\\u0203': 'a',\n    '\\u1EA1': 'a',\n    '\\u1EAD': 'a',\n    '\\u1EB7': 'a',\n    '\\u1E01': 'a',\n    '\\u0105': 'a',\n    '\\u2C65': 'a',\n    '\\u0250': 'a',\n    '\\uA733': 'aa',\n    '\\u00E6': 'ae',\n    '\\u01FD': 'ae',\n    '\\u01E3': 'ae',\n    '\\uA735': 'ao',\n    '\\uA737': 'au',\n    '\\uA739': 'av',\n    '\\uA73B': 'av',\n    '\\uA73D': 'ay',\n    '\\u24D1': 'b',\n    '\\uFF42': 'b',\n    '\\u1E03': 'b',\n    '\\u1E05': 'b',\n    '\\u1E07': 'b',\n    '\\u0180': 'b',\n    '\\u0183': 'b',\n    '\\u0253': 'b',\n    '\\u24D2': 'c',\n    '\\uFF43': 'c',\n    '\\u0107': 'c',\n    '\\u0109': 'c',\n    '\\u010B': 'c',\n    '\\u010D': 'c',\n    '\\u00E7': 'c',\n    '\\u1E09': 'c',\n    '\\u0188': 'c',\n    '\\u023C': 'c',\n    '\\uA73F': 'c',\n    '\\u2184': 'c',\n    '\\u24D3': 'd',\n    '\\uFF44': 'd',\n    '\\u1E0B': 'd',\n    '\\u010F': 'd',\n    '\\u1E0D': 'd',\n    '\\u1E11': 'd',\n    '\\u1E13': 'd',\n    '\\u1E0F': 'd',\n    '\\u0111': 'd',\n    '\\u018C': 'd',\n    '\\u0256': 'd',\n    '\\u0257': 'd',\n    '\\uA77A': 'd',\n    '\\u01F3': 'dz',\n    '\\u01C6': 'dz',\n    '\\u24D4': 'e',\n    '\\uFF45': 'e',\n    '\\u00E8': 'e',\n    '\\u00E9': 'e',\n    '\\u00EA': 'e',\n    '\\u1EC1': 'e',\n    '\\u1EBF': 'e',\n    '\\u1EC5': 'e',\n    '\\u1EC3': 'e',\n    '\\u1EBD': 'e',\n    '\\u0113': 'e',\n    '\\u1E15': 'e',\n    '\\u1E17': 'e',\n    '\\u0115': 'e',\n    '\\u0117': 'e',\n    '\\u00EB': 'e',\n    '\\u1EBB': 'e',\n    '\\u011B': 'e',\n    '\\u0205': 'e',\n    '\\u0207': 'e',\n    '\\u1EB9': 'e',\n    '\\u1EC7': 'e',\n    '\\u0229': 'e',\n    '\\u1E1D': 'e',\n    '\\u0119': 'e',\n    '\\u1E19': 'e',\n    '\\u1E1B': 'e',\n    '\\u0247': 'e',\n    '\\u025B': 'e',\n    '\\u01DD': 'e',\n    '\\u24D5': 'f',\n    '\\uFF46': 'f',\n    '\\u1E1F': 'f',\n    '\\u0192': 'f',\n    '\\uA77C': 'f',\n    '\\u24D6': 'g',\n    '\\uFF47': 'g',\n    '\\u01F5': 'g',\n    '\\u011D': 'g',\n    '\\u1E21': 'g',\n    '\\u011F': 'g',\n    '\\u0121': 'g',\n    '\\u01E7': 'g',\n    '\\u0123': 'g',\n    '\\u01E5': 'g',\n    '\\u0260': 'g',\n    '\\uA7A1': 'g',\n    '\\u1D79': 'g',\n    '\\uA77F': 'g',\n    '\\u24D7': 'h',\n    '\\uFF48': 'h',\n    '\\u0125': 'h',\n    '\\u1E23': 'h',\n    '\\u1E27': 'h',\n    '\\u021F': 'h',\n    '\\u1E25': 'h',\n    '\\u1E29': 'h',\n    '\\u1E2B': 'h',\n    '\\u1E96': 'h',\n    '\\u0127': 'h',\n    '\\u2C68': 'h',\n    '\\u2C76': 'h',\n    '\\u0265': 'h',\n    '\\u0195': 'hv',\n    '\\u24D8': 'i',\n    '\\uFF49': 'i',\n    '\\u00EC': 'i',\n    '\\u00ED': 'i',\n    '\\u00EE': 'i',\n    '\\u0129': 'i',\n    '\\u012B': 'i',\n    '\\u012D': 'i',\n    '\\u00EF': 'i',\n    '\\u1E2F': 'i',\n    '\\u1EC9': 'i',\n    '\\u01D0': 'i',\n    '\\u0209': 'i',\n    '\\u020B': 'i',\n    '\\u1ECB': 'i',\n    '\\u012F': 'i',\n    '\\u1E2D': 'i',\n    '\\u0268': 'i',\n    '\\u0131': 'i',\n    '\\u24D9': 'j',\n    '\\uFF4A': 'j',\n    '\\u0135': 'j',\n    '\\u01F0': 'j',\n    '\\u0249': 'j',\n    '\\u24DA': 'k',\n    '\\uFF4B': 'k',\n    '\\u1E31': 'k',\n    '\\u01E9': 'k',\n    '\\u1E33': 'k',\n    '\\u0137': 'k',\n    '\\u1E35': 'k',\n    '\\u0199': 'k',\n    '\\u2C6A': 'k',\n    '\\uA741': 'k',\n    '\\uA743': 'k',\n    '\\uA745': 'k',\n    '\\uA7A3': 'k',\n    '\\u24DB': 'l',\n    '\\uFF4C': 'l',\n    '\\u0140': 'l',\n    '\\u013A': 'l',\n    '\\u013E': 'l',\n    '\\u1E37': 'l',\n    '\\u1E39': 'l',\n    '\\u013C': 'l',\n    '\\u1E3D': 'l',\n    '\\u1E3B': 'l',\n    '\\u017F': 'l',\n    '\\u0142': 'l',\n    '\\u019A': 'l',\n    '\\u026B': 'l',\n    '\\u2C61': 'l',\n    '\\uA749': 'l',\n    '\\uA781': 'l',\n    '\\uA747': 'l',\n    '\\u01C9': 'lj',\n    '\\u24DC': 'm',\n    '\\uFF4D': 'm',\n    '\\u1E3F': 'm',\n    '\\u1E41': 'm',\n    '\\u1E43': 'm',\n    '\\u0271': 'm',\n    '\\u026F': 'm',\n    '\\u24DD': 'n',\n    '\\uFF4E': 'n',\n    '\\u01F9': 'n',\n    '\\u0144': 'n',\n    '\\u00F1': 'n',\n    '\\u1E45': 'n',\n    '\\u0148': 'n',\n    '\\u1E47': 'n',\n    '\\u0146': 'n',\n    '\\u1E4B': 'n',\n    '\\u1E49': 'n',\n    '\\u019E': 'n',\n    '\\u0272': 'n',\n    '\\u0149': 'n',\n    '\\uA791': 'n',\n    '\\uA7A5': 'n',\n    '\\u01CC': 'nj',\n    '\\u24DE': 'o',\n    '\\uFF4F': 'o',\n    '\\u00F2': 'o',\n    '\\u00F3': 'o',\n    '\\u00F4': 'o',\n    '\\u1ED3': 'o',\n    '\\u1ED1': 'o',\n    '\\u1ED7': 'o',\n    '\\u1ED5': 'o',\n    '\\u00F5': 'o',\n    '\\u1E4D': 'o',\n    '\\u022D': 'o',\n    '\\u1E4F': 'o',\n    '\\u014D': 'o',\n    '\\u1E51': 'o',\n    '\\u1E53': 'o',\n    '\\u014F': 'o',\n    '\\u022F': 'o',\n    '\\u0231': 'o',\n    '\\u00F6': 'o',\n    '\\u022B': 'o',\n    '\\u1ECF': 'o',\n    '\\u0151': 'o',\n    '\\u01D2': 'o',\n    '\\u020D': 'o',\n    '\\u020F': 'o',\n    '\\u01A1': 'o',\n    '\\u1EDD': 'o',\n    '\\u1EDB': 'o',\n    '\\u1EE1': 'o',\n    '\\u1EDF': 'o',\n    '\\u1EE3': 'o',\n    '\\u1ECD': 'o',\n    '\\u1ED9': 'o',\n    '\\u01EB': 'o',\n    '\\u01ED': 'o',\n    '\\u00F8': 'o',\n    '\\u01FF': 'o',\n    '\\u0254': 'o',\n    '\\uA74B': 'o',\n    '\\uA74D': 'o',\n    '\\u0275': 'o',\n    '\\u0153': 'oe',\n    '\\u01A3': 'oi',\n    '\\u0223': 'ou',\n    '\\uA74F': 'oo',\n    '\\u24DF': 'p',\n    '\\uFF50': 'p',\n    '\\u1E55': 'p',\n    '\\u1E57': 'p',\n    '\\u01A5': 'p',\n    '\\u1D7D': 'p',\n    '\\uA751': 'p',\n    '\\uA753': 'p',\n    '\\uA755': 'p',\n    '\\u24E0': 'q',\n    '\\uFF51': 'q',\n    '\\u024B': 'q',\n    '\\uA757': 'q',\n    '\\uA759': 'q',\n    '\\u24E1': 'r',\n    '\\uFF52': 'r',\n    '\\u0155': 'r',\n    '\\u1E59': 'r',\n    '\\u0159': 'r',\n    '\\u0211': 'r',\n    '\\u0213': 'r',\n    '\\u1E5B': 'r',\n    '\\u1E5D': 'r',\n    '\\u0157': 'r',\n    '\\u1E5F': 'r',\n    '\\u024D': 'r',\n    '\\u027D': 'r',\n    '\\uA75B': 'r',\n    '\\uA7A7': 'r',\n    '\\uA783': 'r',\n    '\\u24E2': 's',\n    '\\uFF53': 's',\n    '\\u00DF': 's',\n    '\\u015B': 's',\n    '\\u1E65': 's',\n    '\\u015D': 's',\n    '\\u1E61': 's',\n    '\\u0161': 's',\n    '\\u1E67': 's',\n    '\\u1E63': 's',\n    '\\u1E69': 's',\n    '\\u0219': 's',\n    '\\u015F': 's',\n    '\\u023F': 's',\n    '\\uA7A9': 's',\n    '\\uA785': 's',\n    '\\u1E9B': 's',\n    '\\u24E3': 't',\n    '\\uFF54': 't',\n    '\\u1E6B': 't',\n    '\\u1E97': 't',\n    '\\u0165': 't',\n    '\\u1E6D': 't',\n    '\\u021B': 't',\n    '\\u0163': 't',\n    '\\u1E71': 't',\n    '\\u1E6F': 't',\n    '\\u0167': 't',\n    '\\u01AD': 't',\n    '\\u0288': 't',\n    '\\u2C66': 't',\n    '\\uA787': 't',\n    '\\uA729': 'tz',\n    '\\u24E4': 'u',\n    '\\uFF55': 'u',\n    '\\u00F9': 'u',\n    '\\u00FA': 'u',\n    '\\u00FB': 'u',\n    '\\u0169': 'u',\n    '\\u1E79': 'u',\n    '\\u016B': 'u',\n    '\\u1E7B': 'u',\n    '\\u016D': 'u',\n    '\\u00FC': 'u',\n    '\\u01DC': 'u',\n    '\\u01D8': 'u',\n    '\\u01D6': 'u',\n    '\\u01DA': 'u',\n    '\\u1EE7': 'u',\n    '\\u016F': 'u',\n    '\\u0171': 'u',\n    '\\u01D4': 'u',\n    '\\u0215': 'u',\n    '\\u0217': 'u',\n    '\\u01B0': 'u',\n    '\\u1EEB': 'u',\n    '\\u1EE9': 'u',\n    '\\u1EEF': 'u',\n    '\\u1EED': 'u',\n    '\\u1EF1': 'u',\n    '\\u1EE5': 'u',\n    '\\u1E73': 'u',\n    '\\u0173': 'u',\n    '\\u1E77': 'u',\n    '\\u1E75': 'u',\n    '\\u0289': 'u',\n    '\\u24E5': 'v',\n    '\\uFF56': 'v',\n    '\\u1E7D': 'v',\n    '\\u1E7F': 'v',\n    '\\u028B': 'v',\n    '\\uA75F': 'v',\n    '\\u028C': 'v',\n    '\\uA761': 'vy',\n    '\\u24E6': 'w',\n    '\\uFF57': 'w',\n    '\\u1E81': 'w',\n    '\\u1E83': 'w',\n    '\\u0175': 'w',\n    '\\u1E87': 'w',\n    '\\u1E85': 'w',\n    '\\u1E98': 'w',\n    '\\u1E89': 'w',\n    '\\u2C73': 'w',\n    '\\u24E7': 'x',\n    '\\uFF58': 'x',\n    '\\u1E8B': 'x',\n    '\\u1E8D': 'x',\n    '\\u24E8': 'y',\n    '\\uFF59': 'y',\n    '\\u1EF3': 'y',\n    '\\u00FD': 'y',\n    '\\u0177': 'y',\n    '\\u1EF9': 'y',\n    '\\u0233': 'y',\n    '\\u1E8F': 'y',\n    '\\u00FF': 'y',\n    '\\u1EF7': 'y',\n    '\\u1E99': 'y',\n    '\\u1EF5': 'y',\n    '\\u01B4': 'y',\n    '\\u024F': 'y',\n    '\\u1EFF': 'y',\n    '\\u24E9': 'z',\n    '\\uFF5A': 'z',\n    '\\u017A': 'z',\n    '\\u1E91': 'z',\n    '\\u017C': 'z',\n    '\\u017E': 'z',\n    '\\u1E93': 'z',\n    '\\u1E95': 'z',\n    '\\u01B6': 'z',\n    '\\u0225': 'z',\n    '\\u0240': 'z',\n    '\\u2C6C': 'z',\n    '\\uA763': 'z',\n    '\\u0386': '\\u0391',\n    '\\u0388': '\\u0395',\n    '\\u0389': '\\u0397',\n    '\\u038A': '\\u0399',\n    '\\u03AA': '\\u0399',\n    '\\u038C': '\\u039F',\n    '\\u038E': '\\u03A5',\n    '\\u03AB': '\\u03A5',\n    '\\u038F': '\\u03A9',\n    '\\u03AC': '\\u03B1',\n    '\\u03AD': '\\u03B5',\n    '\\u03AE': '\\u03B7',\n    '\\u03AF': '\\u03B9',\n    '\\u03CA': '\\u03B9',\n    '\\u0390': '\\u03B9',\n    '\\u03CC': '\\u03BF',\n    '\\u03CD': '\\u03C5',\n    '\\u03CB': '\\u03C5',\n    '\\u03B0': '\\u03C5',\n    '\\u03CE': '\\u03C9',\n    '\\u03C2': '\\u03C3',\n    '\\u2019': '\\''\n  };\n\n  return diacritics;\n});\n\nS2.define('select2/data/base',[\n  '../utils'\n], function (Utils) {\n  function BaseAdapter ($element, options) {\n    BaseAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseAdapter, Utils.Observable);\n\n  BaseAdapter.prototype.current = function (callback) {\n    throw new Error('The `current` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.query = function (params, callback) {\n    throw new Error('The `query` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.bind = function (container, $container) {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.destroy = function () {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.generateResultId = function (container, data) {\n    var id = container.id + '-result-';\n\n    id += Utils.generateChars(4);\n\n    if (data.id != null) {\n      id += '-' + data.id.toString();\n    } else {\n      id += '-' + Utils.generateChars(4);\n    }\n    return id;\n  };\n\n  return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n  './base',\n  '../utils',\n  'jquery'\n], function (BaseAdapter, Utils, $) {\n  function SelectAdapter ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    SelectAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(SelectAdapter, BaseAdapter);\n\n  SelectAdapter.prototype.current = function (callback) {\n    var self = this;\n\n    var data = Array.prototype.map.call(\n      this.$element[0].querySelectorAll(':checked'),\n      function (selectedElement) {\n        return self.item($(selectedElement));\n      }\n    );\n\n    callback(data);\n  };\n\n  SelectAdapter.prototype.select = function (data) {\n    var self = this;\n\n    data.selected = true;\n\n    // If data.element is a DOM node, use it instead\n    if (\n      data.element != null && data.element.tagName.toLowerCase() === 'option'\n    ) {\n      data.element.selected = true;\n\n      this.$element.trigger('input').trigger('change');\n\n      return;\n    }\n\n    if (this.$element.prop('multiple')) {\n      this.current(function (currentData) {\n        var val = [];\n\n        data = [data];\n        data.push.apply(data, currentData);\n\n        for (var d = 0; d < data.length; d++) {\n          var id = data[d].id;\n\n          if (val.indexOf(id) === -1) {\n            val.push(id);\n          }\n        }\n\n        self.$element.val(val);\n        self.$element.trigger('input').trigger('change');\n      });\n    } else {\n      var val = data.id;\n\n      this.$element.val(val);\n      this.$element.trigger('input').trigger('change');\n    }\n  };\n\n  SelectAdapter.prototype.unselect = function (data) {\n    var self = this;\n\n    if (!this.$element.prop('multiple')) {\n      return;\n    }\n\n    data.selected = false;\n\n    if (\n      data.element != null &&\n      data.element.tagName.toLowerCase() === 'option'\n    ) {\n      data.element.selected = false;\n\n      this.$element.trigger('input').trigger('change');\n\n      return;\n    }\n\n    this.current(function (currentData) {\n      var val = [];\n\n      for (var d = 0; d < currentData.length; d++) {\n        var id = currentData[d].id;\n\n        if (id !== data.id && val.indexOf(id) === -1) {\n          val.push(id);\n        }\n      }\n\n      self.$element.val(val);\n\n      self.$element.trigger('input').trigger('change');\n    });\n  };\n\n  SelectAdapter.prototype.bind = function (container, $container) {\n    var self = this;\n\n    this.container = container;\n\n    container.on('select', function (params) {\n      self.select(params.data);\n    });\n\n    container.on('unselect', function (params) {\n      self.unselect(params.data);\n    });\n  };\n\n  SelectAdapter.prototype.destroy = function () {\n    // Remove anything added to child elements\n    this.$element.find('*').each(function () {\n      // Remove any custom data set by Select2\n      Utils.RemoveData(this);\n    });\n  };\n\n  SelectAdapter.prototype.query = function (params, callback) {\n    var data = [];\n    var self = this;\n\n    var $options = this.$element.children();\n\n    $options.each(function () {\n      if (\n        this.tagName.toLowerCase() !== 'option' &&\n        this.tagName.toLowerCase() !== 'optgroup'\n      ) {\n        return;\n      }\n\n      var $option = $(this);\n\n      var option = self.item($option);\n\n      var matches = self.matches(params, option);\n\n      if (matches !== null) {\n        data.push(matches);\n      }\n    });\n\n    callback({\n      results: data\n    });\n  };\n\n  SelectAdapter.prototype.addOptions = function ($options) {\n    this.$element.append($options);\n  };\n\n  SelectAdapter.prototype.option = function (data) {\n    var option;\n\n    if (data.children) {\n      option = document.createElement('optgroup');\n      option.label = data.text;\n    } else {\n      option = document.createElement('option');\n\n      if (option.textContent !== undefined) {\n        option.textContent = data.text;\n      } else {\n        option.innerText = data.text;\n      }\n    }\n\n    if (data.id !== undefined) {\n      option.value = data.id;\n    }\n\n    if (data.disabled) {\n      option.disabled = true;\n    }\n\n    if (data.selected) {\n      option.selected = true;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    var normalizedData = this._normalizeItem(data);\n    normalizedData.element = option;\n\n    // Override the option's data with the combined data\n    Utils.StoreData(option, 'data', normalizedData);\n\n    return $(option);\n  };\n\n  SelectAdapter.prototype.item = function ($option) {\n    var data = {};\n\n    data = Utils.GetData($option[0], 'data');\n\n    if (data != null) {\n      return data;\n    }\n\n    var option = $option[0];\n\n    if (option.tagName.toLowerCase() === 'option') {\n      data = {\n        id: $option.val(),\n        text: $option.text(),\n        disabled: $option.prop('disabled'),\n        selected: $option.prop('selected'),\n        title: $option.prop('title')\n      };\n    } else if (option.tagName.toLowerCase() === 'optgroup') {\n      data = {\n        text: $option.prop('label'),\n        children: [],\n        title: $option.prop('title')\n      };\n\n      var $children = $option.children('option');\n      var children = [];\n\n      for (var c = 0; c < $children.length; c++) {\n        var $child = $($children[c]);\n\n        var child = this.item($child);\n\n        children.push(child);\n      }\n\n      data.children = children;\n    }\n\n    data = this._normalizeItem(data);\n    data.element = $option[0];\n\n    Utils.StoreData($option[0], 'data', data);\n\n    return data;\n  };\n\n  SelectAdapter.prototype._normalizeItem = function (item) {\n    if (item !== Object(item)) {\n      item = {\n        id: item,\n        text: item\n      };\n    }\n\n    item = $.extend({}, {\n      text: ''\n    }, item);\n\n    var defaults = {\n      selected: false,\n      disabled: false\n    };\n\n    if (item.id != null) {\n      item.id = item.id.toString();\n    }\n\n    if (item.text != null) {\n      item.text = item.text.toString();\n    }\n\n    if (item._resultId == null && item.id && this.container != null) {\n      item._resultId = this.generateResultId(this.container, item);\n    }\n\n    return $.extend({}, defaults, item);\n  };\n\n  SelectAdapter.prototype.matches = function (params, data) {\n    var matcher = this.options.get('matcher');\n\n    return matcher(params, data);\n  };\n\n  return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n  './select',\n  '../utils',\n  'jquery'\n], function (SelectAdapter, Utils, $) {\n  function ArrayAdapter ($element, options) {\n    this._dataToConvert = options.get('data') || [];\n\n    ArrayAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(ArrayAdapter, SelectAdapter);\n\n  ArrayAdapter.prototype.bind = function (container, $container) {\n    ArrayAdapter.__super__.bind.call(this, container, $container);\n\n    this.addOptions(this.convertToOptions(this._dataToConvert));\n  };\n\n  ArrayAdapter.prototype.select = function (data) {\n    var $option = this.$element.find('option').filter(function (i, elm) {\n      return elm.value == data.id.toString();\n    });\n\n    if ($option.length === 0) {\n      $option = this.option(data);\n\n      this.addOptions($option);\n    }\n\n    ArrayAdapter.__super__.select.call(this, data);\n  };\n\n  ArrayAdapter.prototype.convertToOptions = function (data) {\n    var self = this;\n\n    var $existing = this.$element.find('option');\n    var existingIds = $existing.map(function () {\n      return self.item($(this)).id;\n    }).get();\n\n    var $options = [];\n\n    // Filter out all items except for the one passed in the argument\n    function onlyItem (item) {\n      return function () {\n        return $(this).val() == item.id;\n      };\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      var item = this._normalizeItem(data[d]);\n\n      // Skip items which were pre-loaded, only merge the data\n      if (existingIds.indexOf(item.id) >= 0) {\n        var $existingOption = $existing.filter(onlyItem(item));\n\n        var existingData = this.item($existingOption);\n        var newData = $.extend(true, {}, item, existingData);\n\n        var $newOption = this.option(newData);\n\n        $existingOption.replaceWith($newOption);\n\n        continue;\n      }\n\n      var $option = this.option(item);\n\n      if (item.children) {\n        var $children = this.convertToOptions(item.children);\n\n        $option.append($children);\n      }\n\n      $options.push($option);\n    }\n\n    return $options;\n  };\n\n  return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n  './array',\n  '../utils',\n  'jquery'\n], function (ArrayAdapter, Utils, $) {\n  function AjaxAdapter ($element, options) {\n    this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n    if (this.ajaxOptions.processResults != null) {\n      this.processResults = this.ajaxOptions.processResults;\n    }\n\n    AjaxAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n  AjaxAdapter.prototype._applyDefaults = function (options) {\n    var defaults = {\n      data: function (params) {\n        return $.extend({}, params, {\n          q: params.term\n        });\n      },\n      transport: function (params, success, failure) {\n        var $request = $.ajax(params);\n\n        $request.then(success);\n        $request.fail(failure);\n\n        return $request;\n      }\n    };\n\n    return $.extend({}, defaults, options, true);\n  };\n\n  AjaxAdapter.prototype.processResults = function (results) {\n    return results;\n  };\n\n  AjaxAdapter.prototype.query = function (params, callback) {\n    var matches = [];\n    var self = this;\n\n    if (this._request != null) {\n      // JSONP requests cannot always be aborted\n      if (typeof this._request.abort === 'function') {\n        this._request.abort();\n      }\n\n      this._request = null;\n    }\n\n    var options = $.extend({\n      type: 'GET'\n    }, this.ajaxOptions);\n\n    if (typeof options.url === 'function') {\n      options.url = options.url.call(this.$element, params);\n    }\n\n    if (typeof options.data === 'function') {\n      options.data = options.data.call(this.$element, params);\n    }\n\n    function request () {\n      var $request = options.transport(options, function (data) {\n        var results = self.processResults(data, params);\n\n        if (self.options.get('debug') && window.console && console.error) {\n          // Check to make sure that the response included a `results` key.\n          if (!results || !results.results || !Array.isArray(results.results)) {\n            console.error(\n              'Select2: The AJAX results did not return an array in the ' +\n              '`results` key of the response.'\n            );\n          }\n        }\n\n        callback(results);\n      }, function () {\n        // Attempt to detect if a request was aborted\n        // Only works if the transport exposes a status property\n        if ('status' in $request &&\n            ($request.status === 0 || $request.status === '0')) {\n          return;\n        }\n\n        self.trigger('results:message', {\n          message: 'errorLoading'\n        });\n      });\n\n      self._request = $request;\n    }\n\n    if (this.ajaxOptions.delay && params.term != null) {\n      if (this._queryTimeout) {\n        window.clearTimeout(this._queryTimeout);\n      }\n\n      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n    } else {\n      request();\n    }\n  };\n\n  return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n  'jquery'\n], function ($) {\n  function Tags (decorated, $element, options) {\n    var tags = options.get('tags');\n\n    var createTag = options.get('createTag');\n\n    if (createTag !== undefined) {\n      this.createTag = createTag;\n    }\n\n    var insertTag = options.get('insertTag');\n\n    if (insertTag !== undefined) {\n        this.insertTag = insertTag;\n    }\n\n    decorated.call(this, $element, options);\n\n    if (Array.isArray(tags)) {\n      for (var t = 0; t < tags.length; t++) {\n        var tag = tags[t];\n        var item = this._normalizeItem(tag);\n\n        var $option = this.option(item);\n\n        this.$element.append($option);\n      }\n    }\n  }\n\n  Tags.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    this._removeOldTags();\n\n    if (params.term == null || params.page != null) {\n      decorated.call(this, params, callback);\n      return;\n    }\n\n    function wrapper (obj, child) {\n      var data = obj.results;\n\n      for (var i = 0; i < data.length; i++) {\n        var option = data[i];\n\n        var checkChildren = (\n          option.children != null &&\n          !wrapper({\n            results: option.children\n          }, true)\n        );\n\n        var optionText = (option.text || '').toUpperCase();\n        var paramsTerm = (params.term || '').toUpperCase();\n\n        var checkText = optionText === paramsTerm;\n\n        if (checkText || checkChildren) {\n          if (child) {\n            return false;\n          }\n\n          obj.data = data;\n          callback(obj);\n\n          return;\n        }\n      }\n\n      if (child) {\n        return true;\n      }\n\n      var tag = self.createTag(params);\n\n      if (tag != null) {\n        var $option = self.option(tag);\n        $option.attr('data-select2-tag', 'true');\n\n        self.addOptions([$option]);\n\n        self.insertTag(data, tag);\n      }\n\n      obj.results = data;\n\n      callback(obj);\n    }\n\n    decorated.call(this, params, wrapper);\n  };\n\n  Tags.prototype.createTag = function (decorated, params) {\n    if (params.term == null) {\n      return null;\n    }\n\n    var term = params.term.trim();\n\n    if (term === '') {\n      return null;\n    }\n\n    return {\n      id: term,\n      text: term\n    };\n  };\n\n  Tags.prototype.insertTag = function (_, data, tag) {\n    data.unshift(tag);\n  };\n\n  Tags.prototype._removeOldTags = function (_) {\n    var $options = this.$element.find('option[data-select2-tag]');\n\n    $options.each(function () {\n      if (this.selected) {\n        return;\n      }\n\n      $(this).remove();\n    });\n  };\n\n  return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n  'jquery'\n], function ($) {\n  function Tokenizer (decorated, $element, options) {\n    var tokenizer = options.get('tokenizer');\n\n    if (tokenizer !== undefined) {\n      this.tokenizer = tokenizer;\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  Tokenizer.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    this.$search =  container.dropdown.$search || container.selection.$search ||\n      $container.find('.select2-search__field');\n  };\n\n  Tokenizer.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    function createAndSelect (data) {\n      // Normalize the data object so we can use it for checks\n      var item = self._normalizeItem(data);\n\n      // Check if the data object already exists as a tag\n      // Select it if it doesn't\n      var $existingOptions = self.$element.find('option').filter(function () {\n        return $(this).val() === item.id;\n      });\n\n      // If an existing option wasn't found for it, create the option\n      if (!$existingOptions.length) {\n        var $option = self.option(item);\n        $option.attr('data-select2-tag', true);\n\n        self._removeOldTags();\n        self.addOptions([$option]);\n      }\n\n      // Select the item, now that we know there is an option for it\n      select(item);\n    }\n\n    function select (data) {\n      self.trigger('select', {\n        data: data\n      });\n    }\n\n    params.term = params.term || '';\n\n    var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n    if (tokenData.term !== params.term) {\n      // Replace the search term if we have the search box\n      if (this.$search.length) {\n        this.$search.val(tokenData.term);\n        this.$search.trigger('focus');\n      }\n\n      params.term = tokenData.term;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n    var separators = options.get('tokenSeparators') || [];\n    var term = params.term;\n    var i = 0;\n\n    var createTag = this.createTag || function (params) {\n      return {\n        id: params.term,\n        text: params.term\n      };\n    };\n\n    while (i < term.length) {\n      var termChar = term[i];\n\n      if (separators.indexOf(termChar) === -1) {\n        i++;\n\n        continue;\n      }\n\n      var part = term.substr(0, i);\n      var partParams = $.extend({}, params, {\n        term: part\n      });\n\n      var data = createTag(partParams);\n\n      if (data == null) {\n        i++;\n        continue;\n      }\n\n      callback(data);\n\n      // Reset the term to not include the tokenized portion\n      term = term.substr(i + 1) || '';\n      i = 0;\n    }\n\n    return {\n      term: term\n    };\n  };\n\n  return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n  function MinimumInputLength (decorated, $e, options) {\n    this.minimumInputLength = options.get('minimumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MinimumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (params.term.length < this.minimumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooShort',\n        args: {\n          minimum: this.minimumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n  function MaximumInputLength (decorated, $e, options) {\n    this.maximumInputLength = options.get('maximumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (this.maximumInputLength > 0 &&\n        params.term.length > this.maximumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooLong',\n        args: {\n          maximum: this.maximumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n  function MaximumSelectionLength (decorated, $e, options) {\n    this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumSelectionLength.prototype.bind =\n    function (decorated, container, $container) {\n      var self = this;\n\n      decorated.call(this, container, $container);\n\n      container.on('select', function () {\n        self._checkIfMaximumSelected();\n      });\n  };\n\n  MaximumSelectionLength.prototype.query =\n    function (decorated, params, callback) {\n      var self = this;\n\n      this._checkIfMaximumSelected(function () {\n        decorated.call(self, params, callback);\n      });\n  };\n\n  MaximumSelectionLength.prototype._checkIfMaximumSelected =\n    function (_, successCallback) {\n      var self = this;\n\n      this.current(function (currentData) {\n        var count = currentData != null ? currentData.length : 0;\n        if (self.maximumSelectionLength > 0 &&\n          count >= self.maximumSelectionLength) {\n          self.trigger('results:message', {\n            message: 'maximumSelected',\n            args: {\n              maximum: self.maximumSelectionLength\n            }\n          });\n          return;\n        }\n\n        if (successCallback) {\n          successCallback();\n        }\n      });\n  };\n\n  return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Dropdown ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    Dropdown.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Dropdown, Utils.Observable);\n\n  Dropdown.prototype.render = function () {\n    var $dropdown = $(\n      '<span class=\"select2-dropdown\">' +\n        '<span class=\"select2-results\"></span>' +\n      '</span>'\n    );\n\n    $dropdown.attr('dir', this.options.get('dir'));\n\n    this.$dropdown = $dropdown;\n\n    return $dropdown;\n  };\n\n  Dropdown.prototype.bind = function () {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.position = function ($dropdown, $container) {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.destroy = function () {\n    // Remove the dropdown from the DOM\n    this.$dropdown.remove();\n  };\n\n  return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n  'jquery'\n], function ($) {\n  function Search () { }\n\n  Search.prototype.render = function (decorated) {\n    var $rendered = decorated.call(this);\n    var searchLabel = this.options.get('translations').get('search');\n\n    var $search = $(\n      '<span class=\"select2-search select2-search--dropdown\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n      '</span>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    this.$search.prop('autocomplete', this.options.get('autocomplete'));\n    this.$search.attr('aria-label', searchLabel());\n\n    $rendered.prepend($search);\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    decorated.call(this, container, $container);\n\n    this.$search.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n    });\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$search.on('input', function (evt) {\n      // Unbind the duplicated `keyup` event\n      $(this).off('keyup');\n    });\n\n    this.$search.on('keyup input', function (evt) {\n      self.handleSearch(evt);\n    });\n\n    container.on('open', function () {\n      self.$search.attr('tabindex', 0);\n      self.$search.attr('aria-controls', resultsId);\n\n      self.$search.trigger('focus');\n\n      window.setTimeout(function () {\n        self.$search.trigger('focus');\n      }, 0);\n    });\n\n    container.on('close', function () {\n      self.$search.attr('tabindex', -1);\n      self.$search.removeAttr('aria-controls');\n      self.$search.removeAttr('aria-activedescendant');\n\n      self.$search.val('');\n      self.$search.trigger('blur');\n    });\n\n    container.on('focus', function () {\n      if (!container.isOpen()) {\n        self.$search.trigger('focus');\n      }\n    });\n\n    container.on('results:all', function (params) {\n      if (params.query.term == null || params.query.term === '') {\n        var showSearch = self.showSearch(params);\n\n        if (showSearch) {\n          self.$searchContainer[0].classList.remove('select2-search--hide');\n        } else {\n          self.$searchContainer[0].classList.add('select2-search--hide');\n        }\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      if (params.data._resultId) {\n        self.$search.attr('aria-activedescendant', params.data._resultId);\n      } else {\n        self.$search.removeAttr('aria-activedescendant');\n      }\n    });\n  };\n\n  Search.prototype.handleSearch = function (evt) {\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.showSearch = function (_, params) {\n    return true;\n  };\n\n  return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n  function HidePlaceholder (decorated, $element, options, dataAdapter) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  HidePlaceholder.prototype.append = function (decorated, data) {\n    data.results = this.removePlaceholder(data.results);\n\n    decorated.call(this, data);\n  };\n\n  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n    var modifiedData = data.slice(0);\n\n    for (var d = data.length - 1; d >= 0; d--) {\n      var item = data[d];\n\n      if (this.placeholder.id === item.id) {\n        modifiedData.splice(d, 1);\n      }\n    }\n\n    return modifiedData;\n  };\n\n  return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n  'jquery'\n], function ($) {\n  function InfiniteScroll (decorated, $element, options, dataAdapter) {\n    this.lastParams = {};\n\n    decorated.call(this, $element, options, dataAdapter);\n\n    this.$loadingMore = this.createLoadingMore();\n    this.loading = false;\n  }\n\n  InfiniteScroll.prototype.append = function (decorated, data) {\n    this.$loadingMore.remove();\n    this.loading = false;\n\n    decorated.call(this, data);\n\n    if (this.showLoadingMore(data)) {\n      this.$results.append(this.$loadingMore);\n      this.loadMoreIfNeeded();\n    }\n  };\n\n  InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('query', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    container.on('query:append', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n  };\n\n  InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n    var isLoadMoreVisible = $.contains(\n      document.documentElement,\n      this.$loadingMore[0]\n    );\n\n    if (this.loading || !isLoadMoreVisible) {\n      return;\n    }\n\n    var currentOffset = this.$results.offset().top +\n      this.$results.outerHeight(false);\n    var loadingMoreOffset = this.$loadingMore.offset().top +\n      this.$loadingMore.outerHeight(false);\n\n    if (currentOffset + 50 >= loadingMoreOffset) {\n      this.loadMore();\n    }\n  };\n\n  InfiniteScroll.prototype.loadMore = function () {\n    this.loading = true;\n\n    var params = $.extend({}, {page: 1}, this.lastParams);\n\n    params.page++;\n\n    this.trigger('query:append', params);\n  };\n\n  InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n    return data.pagination && data.pagination.more;\n  };\n\n  InfiniteScroll.prototype.createLoadingMore = function () {\n    var $option = $(\n      '<li ' +\n      'class=\"select2-results__option select2-results__option--load-more\"' +\n      'role=\"option\" aria-disabled=\"true\"></li>'\n    );\n\n    var message = this.options.get('translations').get('loadingMore');\n\n    $option.html(message(this.lastParams));\n\n    return $option;\n  };\n\n  return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function AttachBody (decorated, $element, options) {\n    this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n    decorated.call(this, $element, options);\n  }\n\n  AttachBody.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('open', function () {\n      self._showDropdown();\n      self._attachPositioningHandler(container);\n\n      // Must bind after the results handlers to ensure correct sizing\n      self._bindContainerResultHandlers(container);\n    });\n\n    container.on('close', function () {\n      self._hideDropdown();\n      self._detachPositioningHandler(container);\n    });\n\n    this.$dropdownContainer.on('mousedown', function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  AttachBody.prototype.destroy = function (decorated) {\n    decorated.call(this);\n\n    this.$dropdownContainer.remove();\n  };\n\n  AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n    // Clone all of the container classes\n    $dropdown.attr('class', $container.attr('class'));\n\n    $dropdown[0].classList.remove('select2');\n    $dropdown[0].classList.add('select2-container--open');\n\n    $dropdown.css({\n      position: 'absolute',\n      top: -999999\n    });\n\n    this.$container = $container;\n  };\n\n  AttachBody.prototype.render = function (decorated) {\n    var $container = $('<span></span>');\n\n    var $dropdown = decorated.call(this);\n    $container.append($dropdown);\n\n    this.$dropdownContainer = $container;\n\n    return $container;\n  };\n\n  AttachBody.prototype._hideDropdown = function (decorated) {\n    this.$dropdownContainer.detach();\n  };\n\n  AttachBody.prototype._bindContainerResultHandlers =\n      function (decorated, container) {\n\n    // These should only be bound once\n    if (this._containerResultsHandlersBound) {\n      return;\n    }\n\n    var self = this;\n\n    container.on('results:all', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('results:append', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('results:message', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('select', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('unselect', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    this._containerResultsHandlersBound = true;\n  };\n\n  AttachBody.prototype._attachPositioningHandler =\n      function (decorated, container) {\n    var self = this;\n\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.each(function () {\n      Utils.StoreData(this, 'select2-scroll-position', {\n        x: $(this).scrollLeft(),\n        y: $(this).scrollTop()\n      });\n    });\n\n    $watchers.on(scrollEvent, function (ev) {\n      var position = Utils.GetData(this, 'select2-scroll-position');\n      $(this).scrollTop(position.y);\n    });\n\n    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n      function (e) {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n  };\n\n  AttachBody.prototype._detachPositioningHandler =\n      function (decorated, container) {\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.off(scrollEvent);\n\n    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n  };\n\n  AttachBody.prototype._positionDropdown = function () {\n    var $window = $(window);\n\n    var isCurrentlyAbove = this.$dropdown[0].classList\n      .contains('select2-dropdown--above');\n    var isCurrentlyBelow = this.$dropdown[0].classList\n      .contains('select2-dropdown--below');\n\n    var newDirection = null;\n\n    var offset = this.$container.offset();\n\n    offset.bottom = offset.top + this.$container.outerHeight(false);\n\n    var container = {\n      height: this.$container.outerHeight(false)\n    };\n\n    container.top = offset.top;\n    container.bottom = offset.top + container.height;\n\n    var dropdown = {\n      height: this.$dropdown.outerHeight(false)\n    };\n\n    var viewport = {\n      top: $window.scrollTop(),\n      bottom: $window.scrollTop() + $window.height()\n    };\n\n    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n    var css = {\n      left: offset.left,\n      top: container.bottom\n    };\n\n    // Determine what the parent element is to use for calculating the offset\n    var $offsetParent = this.$dropdownParent;\n\n    // For statically positioned elements, we need to get the element\n    // that is determining the offset\n    if ($offsetParent.css('position') === 'static') {\n      $offsetParent = $offsetParent.offsetParent();\n    }\n\n    var parentOffset = {\n      top: 0,\n      left: 0\n    };\n\n    if (\n      $.contains(document.body, $offsetParent[0]) ||\n      $offsetParent[0].isConnected\n      ) {\n      parentOffset = $offsetParent.offset();\n    }\n\n    css.top -= parentOffset.top;\n    css.left -= parentOffset.left;\n\n    if (!isCurrentlyAbove && !isCurrentlyBelow) {\n      newDirection = 'below';\n    }\n\n    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n      newDirection = 'above';\n    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n      newDirection = 'below';\n    }\n\n    if (newDirection == 'above' ||\n      (isCurrentlyAbove && newDirection !== 'below')) {\n      css.top = container.top - parentOffset.top - dropdown.height;\n    }\n\n    if (newDirection != null) {\n      this.$dropdown[0].classList.remove('select2-dropdown--below');\n      this.$dropdown[0].classList.remove('select2-dropdown--above');\n      this.$dropdown[0].classList.add('select2-dropdown--' + newDirection);\n\n      this.$container[0].classList.remove('select2-container--below');\n      this.$container[0].classList.remove('select2-container--above');\n      this.$container[0].classList.add('select2-container--' + newDirection);\n    }\n\n    this.$dropdownContainer.css(css);\n  };\n\n  AttachBody.prototype._resizeDropdown = function () {\n    var css = {\n      width: this.$container.outerWidth(false) + 'px'\n    };\n\n    if (this.options.get('dropdownAutoWidth')) {\n      css.minWidth = css.width;\n      css.position = 'relative';\n      css.width = 'auto';\n    }\n\n    this.$dropdown.css(css);\n  };\n\n  AttachBody.prototype._showDropdown = function (decorated) {\n    this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n    this._positionDropdown();\n    this._resizeDropdown();\n  };\n\n  return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n  function countResults (data) {\n    var count = 0;\n\n    for (var d = 0; d < data.length; d++) {\n      var item = data[d];\n\n      if (item.children) {\n        count += countResults(item.children);\n      } else {\n        count++;\n      }\n    }\n\n    return count;\n  }\n\n  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n    this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n    if (this.minimumResultsForSearch < 0) {\n      this.minimumResultsForSearch = Infinity;\n    }\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n    if (countResults(params.data.results) < this.minimumResultsForSearch) {\n      return false;\n    }\n\n    return decorated.call(this, params);\n  };\n\n  return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n  '../utils'\n], function (Utils) {\n  function SelectOnClose () { }\n\n  SelectOnClose.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('close', function (params) {\n      self._handleSelectOnClose(params);\n    });\n  };\n\n  SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n    if (params && params.originalSelect2Event != null) {\n      var event = params.originalSelect2Event;\n\n      // Don't select an item if the close event was triggered from a select or\n      // unselect event\n      if (event._type === 'select' || event._type === 'unselect') {\n        return;\n      }\n    }\n\n    var $highlightedResults = this.getHighlightedResults();\n\n    // Only select highlighted results\n    if ($highlightedResults.length < 1) {\n      return;\n    }\n\n    var data = Utils.GetData($highlightedResults[0], 'data');\n\n    // Don't re-select already selected resulte\n    if (\n      (data.element != null && data.element.selected) ||\n      (data.element == null && data.selected)\n    ) {\n      return;\n    }\n\n    this.trigger('select', {\n        data: data\n    });\n  };\n\n  return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n  function CloseOnSelect () { }\n\n  CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('select', function (evt) {\n      self._selectTriggered(evt);\n    });\n\n    container.on('unselect', function (evt) {\n      self._selectTriggered(evt);\n    });\n  };\n\n  CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n    var originalEvent = evt.originalEvent;\n\n    // Don't close if the control key is being held\n    if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n      return;\n    }\n\n    this.trigger('close', {\n      originalEvent: originalEvent,\n      originalSelect2Event: evt\n    });\n  };\n\n  return CloseOnSelect;\n});\n\nS2.define('select2/dropdown/dropdownCss',[\n  '../utils'\n], function (Utils) {\n  function DropdownCSS () { }\n\n  DropdownCSS.prototype.render = function (decorated) {\n    var $dropdown = decorated.call(this);\n\n    var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n    if (dropdownCssClass.indexOf(':all:') !== -1) {\n      dropdownCssClass = dropdownCssClass.replace(':all:', '');\n\n      Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);\n    }\n\n    $dropdown.addClass(dropdownCssClass);\n\n    return $dropdown;\n  };\n\n  return DropdownCSS;\n});\n\nS2.define('select2/dropdown/tagsSearchHighlight',[\n  '../utils'\n], function (Utils) {\n  function TagsSearchHighlight () { }\n\n  TagsSearchHighlight.prototype.highlightFirstItem = function (decorated) {\n    var $options = this.$results\n    .find(\n      '.select2-results__option--selectable' +\n      ':not(.select2-results__option--selected)'\n    );\n\n    if ($options.length > 0) {\n      var $firstOption = $options.first();\n      var data = Utils.GetData($firstOption[0], 'data');\n      var firstElement = data.element;\n\n      if (firstElement && firstElement.getAttribute) {\n        if (firstElement.getAttribute('data-select2-tag') === 'true') {\n          $firstOption.trigger('mouseenter');\n\n          return;\n        }\n      }\n    }\n\n    decorated.call(this);\n  };\n\n  return TagsSearchHighlight;\n});\n\nS2.define('select2/i18n/en',[],function () {\n  // English\n  return {\n    errorLoading: function () {\n      return 'The results could not be loaded.';\n    },\n    inputTooLong: function (args) {\n      var overChars = args.input.length - args.maximum;\n\n      var message = 'Please delete ' + overChars + ' character';\n\n      if (overChars != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    inputTooShort: function (args) {\n      var remainingChars = args.minimum - args.input.length;\n\n      var message = 'Please enter ' + remainingChars + ' or more characters';\n\n      return message;\n    },\n    loadingMore: function () {\n      return 'Loading more results…';\n    },\n    maximumSelected: function (args) {\n      var message = 'You can only select ' + args.maximum + ' item';\n\n      if (args.maximum != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    noResults: function () {\n      return 'No results found';\n    },\n    searching: function () {\n      return 'Searching…';\n    },\n    removeAllItems: function () {\n      return 'Remove all items';\n    },\n    removeItem: function () {\n      return 'Remove item';\n    },\n    search: function() {\n      return 'Search';\n    }\n  };\n});\n\nS2.define('select2/defaults',[\n  'jquery',\n\n  './results',\n\n  './selection/single',\n  './selection/multiple',\n  './selection/placeholder',\n  './selection/allowClear',\n  './selection/search',\n  './selection/selectionCss',\n  './selection/eventRelay',\n\n  './utils',\n  './translation',\n  './diacritics',\n\n  './data/select',\n  './data/array',\n  './data/ajax',\n  './data/tags',\n  './data/tokenizer',\n  './data/minimumInputLength',\n  './data/maximumInputLength',\n  './data/maximumSelectionLength',\n\n  './dropdown',\n  './dropdown/search',\n  './dropdown/hidePlaceholder',\n  './dropdown/infiniteScroll',\n  './dropdown/attachBody',\n  './dropdown/minimumResultsForSearch',\n  './dropdown/selectOnClose',\n  './dropdown/closeOnSelect',\n  './dropdown/dropdownCss',\n  './dropdown/tagsSearchHighlight',\n\n  './i18n/en'\n], function ($,\n\n             ResultsList,\n\n             SingleSelection, MultipleSelection, Placeholder, AllowClear,\n             SelectionSearch, SelectionCSS, EventRelay,\n\n             Utils, Translation, DIACRITICS,\n\n             SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n             DropdownCSS, TagsSearchHighlight,\n\n             EnglishTranslation) {\n  function Defaults () {\n    this.reset();\n  }\n\n  Defaults.prototype.apply = function (options) {\n    options = $.extend(true, {}, this.defaults, options);\n\n    if (options.dataAdapter == null) {\n      if (options.ajax != null) {\n        options.dataAdapter = AjaxData;\n      } else if (options.data != null) {\n        options.dataAdapter = ArrayData;\n      } else {\n        options.dataAdapter = SelectData;\n      }\n\n      if (options.minimumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MinimumInputLength\n        );\n      }\n\n      if (options.maximumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumInputLength\n        );\n      }\n\n      if (options.maximumSelectionLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumSelectionLength\n        );\n      }\n\n      if (options.tags) {\n        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n      }\n\n      if (options.tokenSeparators != null || options.tokenizer != null) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          Tokenizer\n        );\n      }\n    }\n\n    if (options.resultsAdapter == null) {\n      options.resultsAdapter = ResultsList;\n\n      if (options.ajax != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          InfiniteScroll\n        );\n      }\n\n      if (options.placeholder != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          HidePlaceholder\n        );\n      }\n\n      if (options.selectOnClose) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          SelectOnClose\n        );\n      }\n\n      if (options.tags) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          TagsSearchHighlight\n        );\n      }\n    }\n\n    if (options.dropdownAdapter == null) {\n      if (options.multiple) {\n        options.dropdownAdapter = Dropdown;\n      } else {\n        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n        options.dropdownAdapter = SearchableDropdown;\n      }\n\n      if (options.minimumResultsForSearch !== 0) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          MinimumResultsForSearch\n        );\n      }\n\n      if (options.closeOnSelect) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          CloseOnSelect\n        );\n      }\n\n      if (options.dropdownCssClass != null) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          DropdownCSS\n        );\n      }\n\n      options.dropdownAdapter = Utils.Decorate(\n        options.dropdownAdapter,\n        AttachBody\n      );\n    }\n\n    if (options.selectionAdapter == null) {\n      if (options.multiple) {\n        options.selectionAdapter = MultipleSelection;\n      } else {\n        options.selectionAdapter = SingleSelection;\n      }\n\n      // Add the placeholder mixin if a placeholder was specified\n      if (options.placeholder != null) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          Placeholder\n        );\n      }\n\n      if (options.allowClear) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          AllowClear\n        );\n      }\n\n      if (options.multiple) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          SelectionSearch\n        );\n      }\n\n      if (options.selectionCssClass != null) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          SelectionCSS\n        );\n      }\n\n      options.selectionAdapter = Utils.Decorate(\n        options.selectionAdapter,\n        EventRelay\n      );\n    }\n\n    // If the defaults were not previously applied from an element, it is\n    // possible for the language option to have not been resolved\n    options.language = this._resolveLanguage(options.language);\n\n    // Always fall back to English since it will always be complete\n    options.language.push('en');\n\n    var uniqueLanguages = [];\n\n    for (var l = 0; l < options.language.length; l++) {\n      var language = options.language[l];\n\n      if (uniqueLanguages.indexOf(language) === -1) {\n        uniqueLanguages.push(language);\n      }\n    }\n\n    options.language = uniqueLanguages;\n\n    options.translations = this._processTranslations(\n      options.language,\n      options.debug\n    );\n\n    return options;\n  };\n\n  Defaults.prototype.reset = function () {\n    function stripDiacritics (text) {\n      // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n      function match(a) {\n        return DIACRITICS[a] || a;\n      }\n\n      return text.replace(/[^\\u0000-\\u007E]/g, match);\n    }\n\n    function matcher (params, data) {\n      // Always return the object if there is nothing to compare\n      if (params.term == null || params.term.trim() === '') {\n        return data;\n      }\n\n      // Do a recursive check for options with children\n      if (data.children && data.children.length > 0) {\n        // Clone the data object if there are children\n        // This is required as we modify the object to remove any non-matches\n        var match = $.extend(true, {}, data);\n\n        // Check each child of the option\n        for (var c = data.children.length - 1; c >= 0; c--) {\n          var child = data.children[c];\n\n          var matches = matcher(params, child);\n\n          // If there wasn't a match, remove the object in the array\n          if (matches == null) {\n            match.children.splice(c, 1);\n          }\n        }\n\n        // If any children matched, return the new object\n        if (match.children.length > 0) {\n          return match;\n        }\n\n        // If there were no matching children, check just the plain object\n        return matcher(params, match);\n      }\n\n      var original = stripDiacritics(data.text).toUpperCase();\n      var term = stripDiacritics(params.term).toUpperCase();\n\n      // Check if the text contains the term\n      if (original.indexOf(term) > -1) {\n        return data;\n      }\n\n      // If it doesn't contain the term, don't return anything\n      return null;\n    }\n\n    this.defaults = {\n      amdLanguageBase: './i18n/',\n      autocomplete: 'off',\n      closeOnSelect: true,\n      debug: false,\n      dropdownAutoWidth: false,\n      escapeMarkup: Utils.escapeMarkup,\n      language: {},\n      matcher: matcher,\n      minimumInputLength: 0,\n      maximumInputLength: 0,\n      maximumSelectionLength: 0,\n      minimumResultsForSearch: 0,\n      selectOnClose: false,\n      scrollAfterSelect: false,\n      sorter: function (data) {\n        return data;\n      },\n      templateResult: function (result) {\n        return result.text;\n      },\n      templateSelection: function (selection) {\n        return selection.text;\n      },\n      theme: 'default',\n      width: 'resolve'\n    };\n  };\n\n  Defaults.prototype.applyFromElement = function (options, $element) {\n    var optionLanguage = options.language;\n    var defaultLanguage = this.defaults.language;\n    var elementLanguage = $element.prop('lang');\n    var parentLanguage = $element.closest('[lang]').prop('lang');\n\n    var languages = Array.prototype.concat.call(\n      this._resolveLanguage(elementLanguage),\n      this._resolveLanguage(optionLanguage),\n      this._resolveLanguage(defaultLanguage),\n      this._resolveLanguage(parentLanguage)\n    );\n\n    options.language = languages;\n\n    return options;\n  };\n\n  Defaults.prototype._resolveLanguage = function (language) {\n    if (!language) {\n      return [];\n    }\n\n    if ($.isEmptyObject(language)) {\n      return [];\n    }\n\n    if ($.isPlainObject(language)) {\n      return [language];\n    }\n\n    var languages;\n\n    if (!Array.isArray(language)) {\n      languages = [language];\n    } else {\n      languages = language;\n    }\n\n    var resolvedLanguages = [];\n\n    for (var l = 0; l < languages.length; l++) {\n      resolvedLanguages.push(languages[l]);\n\n      if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n        // Extract the region information if it is included\n        var languageParts = languages[l].split('-');\n        var baseLanguage = languageParts[0];\n\n        resolvedLanguages.push(baseLanguage);\n      }\n    }\n\n    return resolvedLanguages;\n  };\n\n  Defaults.prototype._processTranslations = function (languages, debug) {\n    var translations = new Translation();\n\n    for (var l = 0; l < languages.length; l++) {\n      var languageData = new Translation();\n\n      var language = languages[l];\n\n      if (typeof language === 'string') {\n        try {\n          // Try to load it with the original name\n          languageData = Translation.loadPath(language);\n        } catch (e) {\n          try {\n            // If we couldn't load it, check if it wasn't the full path\n            language = this.defaults.amdLanguageBase + language;\n            languageData = Translation.loadPath(language);\n          } catch (ex) {\n            // The translation could not be loaded at all. Sometimes this is\n            // because of a configuration problem, other times this can be\n            // because of how Select2 helps load all possible translation files\n            if (debug && window.console && console.warn) {\n              console.warn(\n                'Select2: The language file for \"' + language + '\" could ' +\n                'not be automatically loaded. A fallback will be used instead.'\n              );\n            }\n          }\n        }\n      } else if ($.isPlainObject(language)) {\n        languageData = new Translation(language);\n      } else {\n        languageData = language;\n      }\n\n      translations.extend(languageData);\n    }\n\n    return translations;\n  };\n\n  Defaults.prototype.set = function (key, value) {\n    var camelKey = $.camelCase(key);\n\n    var data = {};\n    data[camelKey] = value;\n\n    var convertedData = Utils._convertData(data);\n\n    $.extend(true, this.defaults, convertedData);\n  };\n\n  var defaults = new Defaults();\n\n  return defaults;\n});\n\nS2.define('select2/options',[\n  'jquery',\n  './defaults',\n  './utils'\n], function ($, Defaults, Utils) {\n  function Options (options, $element) {\n    this.options = options;\n\n    if ($element != null) {\n      this.fromElement($element);\n    }\n\n    if ($element != null) {\n      this.options = Defaults.applyFromElement(this.options, $element);\n    }\n\n    this.options = Defaults.apply(this.options);\n  }\n\n  Options.prototype.fromElement = function ($e) {\n    var excludedData = ['select2'];\n\n    if (this.options.multiple == null) {\n      this.options.multiple = $e.prop('multiple');\n    }\n\n    if (this.options.disabled == null) {\n      this.options.disabled = $e.prop('disabled');\n    }\n\n    if (this.options.autocomplete == null && $e.prop('autocomplete')) {\n      this.options.autocomplete = $e.prop('autocomplete');\n    }\n\n    if (this.options.dir == null) {\n      if ($e.prop('dir')) {\n        this.options.dir = $e.prop('dir');\n      } else if ($e.closest('[dir]').prop('dir')) {\n        this.options.dir = $e.closest('[dir]').prop('dir');\n      } else {\n        this.options.dir = 'ltr';\n      }\n    }\n\n    $e.prop('disabled', this.options.disabled);\n    $e.prop('multiple', this.options.multiple);\n\n    if (Utils.GetData($e[0], 'select2Tags')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-select2-tags` attribute has been changed to ' +\n          'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n          'removed in future versions of Select2.'\n        );\n      }\n\n      Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n      Utils.StoreData($e[0], 'tags', true);\n    }\n\n    if (Utils.GetData($e[0], 'ajaxUrl')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-ajax-url` attribute has been changed to ' +\n          '`data-ajax--url` and support for the old attribute will be removed' +\n          ' in future versions of Select2.'\n        );\n      }\n\n      $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n      Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n    }\n\n    var dataset = {};\n\n    function upperCaseLetter(_, letter) {\n      return letter.toUpperCase();\n    }\n\n    // Pre-load all of the attributes which are prefixed with `data-`\n    for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n      var attributeName = $e[0].attributes[attr].name;\n      var prefix = 'data-';\n\n      if (attributeName.substr(0, prefix.length) == prefix) {\n        // Get the contents of the attribute after `data-`\n        var dataName = attributeName.substring(prefix.length);\n\n        // Get the data contents from the consistent source\n        // This is more than likely the jQuery data helper\n        var dataValue = Utils.GetData($e[0], dataName);\n\n        // camelCase the attribute name to match the spec\n        var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n        // Store the data attribute contents into the dataset since\n        dataset[camelDataName] = dataValue;\n      }\n    }\n\n    // Prefer the element's `dataset` attribute if it exists\n    // jQuery 1.x does not correctly handle data attributes with multiple dashes\n    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n      dataset = $.extend(true, {}, $e[0].dataset, dataset);\n    }\n\n    // Prefer our internal data cache if it exists\n    var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n\n    data = Utils._convertData(data);\n\n    for (var key in data) {\n      if (excludedData.indexOf(key) > -1) {\n        continue;\n      }\n\n      if ($.isPlainObject(this.options[key])) {\n        $.extend(this.options[key], data[key]);\n      } else {\n        this.options[key] = data[key];\n      }\n    }\n\n    return this;\n  };\n\n  Options.prototype.get = function (key) {\n    return this.options[key];\n  };\n\n  Options.prototype.set = function (key, val) {\n    this.options[key] = val;\n  };\n\n  return Options;\n});\n\nS2.define('select2/core',[\n  'jquery',\n  './options',\n  './utils',\n  './keys'\n], function ($, Options, Utils, KEYS) {\n  var Select2 = function ($element, options) {\n    if (Utils.GetData($element[0], 'select2') != null) {\n      Utils.GetData($element[0], 'select2').destroy();\n    }\n\n    this.$element = $element;\n\n    this.id = this._generateId($element);\n\n    options = options || {};\n\n    this.options = new Options(options, $element);\n\n    Select2.__super__.constructor.call(this);\n\n    // Set up the tabindex\n\n    var tabindex = $element.attr('tabindex') || 0;\n    Utils.StoreData($element[0], 'old-tabindex', tabindex);\n    $element.attr('tabindex', '-1');\n\n    // Set up containers and adapters\n\n    var DataAdapter = this.options.get('dataAdapter');\n    this.dataAdapter = new DataAdapter($element, this.options);\n\n    var $container = this.render();\n\n    this._placeContainer($container);\n\n    var SelectionAdapter = this.options.get('selectionAdapter');\n    this.selection = new SelectionAdapter($element, this.options);\n    this.$selection = this.selection.render();\n\n    this.selection.position(this.$selection, $container);\n\n    var DropdownAdapter = this.options.get('dropdownAdapter');\n    this.dropdown = new DropdownAdapter($element, this.options);\n    this.$dropdown = this.dropdown.render();\n\n    this.dropdown.position(this.$dropdown, $container);\n\n    var ResultsAdapter = this.options.get('resultsAdapter');\n    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n    this.$results = this.results.render();\n\n    this.results.position(this.$results, this.$dropdown);\n\n    // Bind events\n\n    var self = this;\n\n    // Bind the container to all of the adapters\n    this._bindAdapters();\n\n    // Register any DOM event handlers\n    this._registerDomEvents();\n\n    // Register any internal event handlers\n    this._registerDataEvents();\n    this._registerSelectionEvents();\n    this._registerDropdownEvents();\n    this._registerResultsEvents();\n    this._registerEvents();\n\n    // Set the initial state\n    this.dataAdapter.current(function (initialData) {\n      self.trigger('selection:update', {\n        data: initialData\n      });\n    });\n\n    // Hide the original select\n    $element[0].classList.add('select2-hidden-accessible');\n    $element.attr('aria-hidden', 'true');\n\n    // Synchronize any monitored attributes\n    this._syncAttributes();\n\n    Utils.StoreData($element[0], 'select2', this);\n\n    // Ensure backwards compatibility with $element.data('select2').\n    $element.data('select2', this);\n  };\n\n  Utils.Extend(Select2, Utils.Observable);\n\n  Select2.prototype._generateId = function ($element) {\n    var id = '';\n\n    if ($element.attr('id') != null) {\n      id = $element.attr('id');\n    } else if ($element.attr('name') != null) {\n      id = $element.attr('name') + '-' + Utils.generateChars(2);\n    } else {\n      id = Utils.generateChars(4);\n    }\n\n    id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n    id = 'select2-' + id;\n\n    return id;\n  };\n\n  Select2.prototype._placeContainer = function ($container) {\n    $container.insertAfter(this.$element);\n\n    var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n    if (width != null) {\n      $container.css('width', width);\n    }\n  };\n\n  Select2.prototype._resolveWidth = function ($element, method) {\n    var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n    if (method == 'resolve') {\n      var styleWidth = this._resolveWidth($element, 'style');\n\n      if (styleWidth != null) {\n        return styleWidth;\n      }\n\n      return this._resolveWidth($element, 'element');\n    }\n\n    if (method == 'element') {\n      var elementWidth = $element.outerWidth(false);\n\n      if (elementWidth <= 0) {\n        return 'auto';\n      }\n\n      return elementWidth + 'px';\n    }\n\n    if (method == 'style') {\n      var style = $element.attr('style');\n\n      if (typeof(style) !== 'string') {\n        return null;\n      }\n\n      var attrs = style.split(';');\n\n      for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n        var attr = attrs[i].replace(/\\s/g, '');\n        var matches = attr.match(WIDTH);\n\n        if (matches !== null && matches.length >= 1) {\n          return matches[1];\n        }\n      }\n\n      return null;\n    }\n\n    if (method == 'computedstyle') {\n      var computedStyle = window.getComputedStyle($element[0]);\n\n      return computedStyle.width;\n    }\n\n    return method;\n  };\n\n  Select2.prototype._bindAdapters = function () {\n    this.dataAdapter.bind(this, this.$container);\n    this.selection.bind(this, this.$container);\n\n    this.dropdown.bind(this, this.$container);\n    this.results.bind(this, this.$container);\n  };\n\n  Select2.prototype._registerDomEvents = function () {\n    var self = this;\n\n    this.$element.on('change.select2', function () {\n      self.dataAdapter.current(function (data) {\n        self.trigger('selection:update', {\n          data: data\n        });\n      });\n    });\n\n    this.$element.on('focus.select2', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this._syncA = Utils.bind(this._syncAttributes, this);\n    this._syncS = Utils.bind(this._syncSubtree, this);\n\n    this._observer = new window.MutationObserver(function (mutations) {\n      self._syncA();\n      self._syncS(mutations);\n    });\n    this._observer.observe(this.$element[0], {\n      attributes: true,\n      childList: true,\n      subtree: false\n    });\n  };\n\n  Select2.prototype._registerDataEvents = function () {\n    var self = this;\n\n    this.dataAdapter.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerSelectionEvents = function () {\n    var self = this;\n    var nonRelayEvents = ['toggle', 'focus'];\n\n    this.selection.on('toggle', function () {\n      self.toggleDropdown();\n    });\n\n    this.selection.on('focus', function (params) {\n      self.focus(params);\n    });\n\n    this.selection.on('*', function (name, params) {\n      if (nonRelayEvents.indexOf(name) !== -1) {\n        return;\n      }\n\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerDropdownEvents = function () {\n    var self = this;\n\n    this.dropdown.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerResultsEvents = function () {\n    var self = this;\n\n    this.results.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerEvents = function () {\n    var self = this;\n\n    this.on('open', function () {\n      self.$container[0].classList.add('select2-container--open');\n    });\n\n    this.on('close', function () {\n      self.$container[0].classList.remove('select2-container--open');\n    });\n\n    this.on('enable', function () {\n      self.$container[0].classList.remove('select2-container--disabled');\n    });\n\n    this.on('disable', function () {\n      self.$container[0].classList.add('select2-container--disabled');\n    });\n\n    this.on('blur', function () {\n      self.$container[0].classList.remove('select2-container--focus');\n    });\n\n    this.on('query', function (params) {\n      if (!self.isOpen()) {\n        self.trigger('open', {});\n      }\n\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:all', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('query:append', function (params) {\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:append', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('keypress', function (evt) {\n      var key = evt.which;\n\n      if (self.isOpen()) {\n        if (key === KEYS.ESC || (key === KEYS.UP && evt.altKey)) {\n          self.close(evt);\n\n          evt.preventDefault();\n        } else if (key === KEYS.ENTER || key === KEYS.TAB) {\n          self.trigger('results:select', {});\n\n          evt.preventDefault();\n        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n          self.trigger('results:toggle', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.UP) {\n          self.trigger('results:previous', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.DOWN) {\n          self.trigger('results:next', {});\n\n          evt.preventDefault();\n        }\n      } else {\n        if (key === KEYS.ENTER || key === KEYS.SPACE ||\n            (key === KEYS.DOWN && evt.altKey)) {\n          self.open();\n\n          evt.preventDefault();\n        }\n      }\n    });\n  };\n\n  Select2.prototype._syncAttributes = function () {\n    this.options.set('disabled', this.$element.prop('disabled'));\n\n    if (this.isDisabled()) {\n      if (this.isOpen()) {\n        this.close();\n      }\n\n      this.trigger('disable', {});\n    } else {\n      this.trigger('enable', {});\n    }\n  };\n\n  Select2.prototype._isChangeMutation = function (mutations) {\n    var self = this;\n\n    if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n      for (var n = 0; n < mutations.addedNodes.length; n++) {\n        var node = mutations.addedNodes[n];\n\n        if (node.selected) {\n          return true;\n        }\n      }\n    } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n      return true;\n    } else if (Array.isArray(mutations)) {\n      return mutations.some(function (mutation) {\n        return self._isChangeMutation(mutation);\n      });\n    }\n\n    return false;\n  };\n\n  Select2.prototype._syncSubtree = function (mutations) {\n    var changed = this._isChangeMutation(mutations);\n    var self = this;\n\n    // Only re-pull the data if we think there is a change\n    if (changed) {\n      this.dataAdapter.current(function (currentData) {\n        self.trigger('selection:update', {\n          data: currentData\n        });\n      });\n    }\n  };\n\n  /**\n   * Override the trigger method to automatically trigger pre-events when\n   * there are events that can be prevented.\n   */\n  Select2.prototype.trigger = function (name, args) {\n    var actualTrigger = Select2.__super__.trigger;\n    var preTriggerMap = {\n      'open': 'opening',\n      'close': 'closing',\n      'select': 'selecting',\n      'unselect': 'unselecting',\n      'clear': 'clearing'\n    };\n\n    if (args === undefined) {\n      args = {};\n    }\n\n    if (name in preTriggerMap) {\n      var preTriggerName = preTriggerMap[name];\n      var preTriggerArgs = {\n        prevented: false,\n        name: name,\n        args: args\n      };\n\n      actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n      if (preTriggerArgs.prevented) {\n        args.prevented = true;\n\n        return;\n      }\n    }\n\n    actualTrigger.call(this, name, args);\n  };\n\n  Select2.prototype.toggleDropdown = function () {\n    if (this.isDisabled()) {\n      return;\n    }\n\n    if (this.isOpen()) {\n      this.close();\n    } else {\n      this.open();\n    }\n  };\n\n  Select2.prototype.open = function () {\n    if (this.isOpen()) {\n      return;\n    }\n\n    if (this.isDisabled()) {\n      return;\n    }\n\n    this.trigger('query', {});\n  };\n\n  Select2.prototype.close = function (evt) {\n    if (!this.isOpen()) {\n      return;\n    }\n\n    this.trigger('close', { originalEvent : evt });\n  };\n\n  /**\n   * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n   * object.\n   *\n   * @return {true} if the instance is not disabled.\n   * @return {false} if the instance is disabled.\n   */\n  Select2.prototype.isEnabled = function () {\n    return !this.isDisabled();\n  };\n\n  /**\n   * Helper method to abstract the \"disabled\" state of this object.\n   *\n   * @return {true} if the disabled option is true.\n   * @return {false} if the disabled option is false.\n   */\n  Select2.prototype.isDisabled = function () {\n    return this.options.get('disabled');\n  };\n\n  Select2.prototype.isOpen = function () {\n    return this.$container[0].classList.contains('select2-container--open');\n  };\n\n  Select2.prototype.hasFocus = function () {\n    return this.$container[0].classList.contains('select2-container--focus');\n  };\n\n  Select2.prototype.focus = function (data) {\n    // No need to re-trigger focus events if we are already focused\n    if (this.hasFocus()) {\n      return;\n    }\n\n    this.$container[0].classList.add('select2-container--focus');\n    this.trigger('focus', {});\n  };\n\n  Select2.prototype.enable = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n        ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n        ' instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      args = [true];\n    }\n\n    var disabled = !args[0];\n\n    this.$element.prop('disabled', disabled);\n  };\n\n  Select2.prototype.data = function () {\n    if (this.options.get('debug') &&\n        arguments.length > 0 && window.console && console.warn) {\n      console.warn(\n        'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n        'should consider setting the value instead using `$element.val()`.'\n      );\n    }\n\n    var data = [];\n\n    this.dataAdapter.current(function (currentData) {\n      data = currentData;\n    });\n\n    return data;\n  };\n\n  Select2.prototype.val = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n        ' removed in later Select2 versions. Use $element.val() instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      return this.$element.val();\n    }\n\n    var newVal = args[0];\n\n    if (Array.isArray(newVal)) {\n      newVal = newVal.map(function (obj) {\n        return obj.toString();\n      });\n    }\n\n    this.$element.val(newVal).trigger('input').trigger('change');\n  };\n\n  Select2.prototype.destroy = function () {\n    Utils.RemoveData(this.$container[0]);\n    this.$container.remove();\n\n    this._observer.disconnect();\n    this._observer = null;\n\n    this._syncA = null;\n    this._syncS = null;\n\n    this.$element.off('.select2');\n    this.$element.attr('tabindex',\n    Utils.GetData(this.$element[0], 'old-tabindex'));\n\n    this.$element[0].classList.remove('select2-hidden-accessible');\n    this.$element.attr('aria-hidden', 'false');\n    Utils.RemoveData(this.$element[0]);\n    this.$element.removeData('select2');\n\n    this.dataAdapter.destroy();\n    this.selection.destroy();\n    this.dropdown.destroy();\n    this.results.destroy();\n\n    this.dataAdapter = null;\n    this.selection = null;\n    this.dropdown = null;\n    this.results = null;\n  };\n\n  Select2.prototype.render = function () {\n    var $container = $(\n      '<span class=\"select2 select2-container\">' +\n        '<span class=\"selection\"></span>' +\n        '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' +\n      '</span>'\n    );\n\n    $container.attr('dir', this.options.get('dir'));\n\n    this.$container = $container;\n\n    this.$container[0].classList\n      .add('select2-container--' + this.options.get('theme'));\n\n    Utils.StoreData($container[0], 'element', this.$element);\n\n    return $container;\n  };\n\n  return Select2;\n});\n\nS2.define('jquery-mousewheel',[\n  'jquery'\n], function ($) {\n  // Used to shim jQuery.mousewheel for non-full builds.\n  return $;\n});\n\nS2.define('jquery.select2',[\n  'jquery',\n  'jquery-mousewheel',\n\n  './select2/core',\n  './select2/defaults',\n  './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n  if ($.fn.select2 == null) {\n    // All methods that should return the element\n    var thisMethods = ['open', 'close', 'destroy'];\n\n    $.fn.select2 = function (options) {\n      options = options || {};\n\n      if (typeof options === 'object') {\n        this.each(function () {\n          var instanceOptions = $.extend(true, {}, options);\n\n          var instance = new Select2($(this), instanceOptions);\n        });\n\n        return this;\n      } else if (typeof options === 'string') {\n        var ret;\n        var args = Array.prototype.slice.call(arguments, 1);\n\n        this.each(function () {\n          var instance = Utils.GetData(this, 'select2');\n\n          if (instance == null && window.console && console.error) {\n            console.error(\n              'The select2(\\'' + options + '\\') method was called on an ' +\n              'element that is not using Select2.'\n            );\n          }\n\n          ret = instance[options].apply(instance, args);\n        });\n\n        // Check if we should be returning `this`\n        if (thisMethods.indexOf(options) > -1) {\n          return this;\n        }\n\n        return ret;\n      } else {\n        throw new Error('Invalid arguments for Select2: ' + options);\n      }\n    };\n  }\n\n  if ($.fn.select2.defaults == null) {\n    $.fn.select2.defaults = Defaults;\n  }\n\n  return Select2;\n});\n\n  // Return the AMD loader configuration so it can be used outside of this file\n  return {\n    define: S2.define,\n    require: S2.require\n  };\n}());\n\n  // Autoload the jQuery bindings\n  // We know that all of the modules exist above this, so we're safe\n  var select2 = S2.require('jquery.select2');\n\n  // Hold the AMD module references on the jQuery function that was just loaded\n  // This allows Select2 to use the internal loader outside of this file, such\n  // as in the language files.\n  jQuery.fn.select2.amd = S2;\n\n  // Return the Select2 instance for anyone who is importing it.\n  return select2;\n}));\n","module.exports = jQuery;"],"names":["jQuery","S2","fn","select2","amd","requirejs","require","define","undef","main","req","makeMap","handlers","defined","waiting","config","defining","hasOwn","Object","prototype","hasOwnProperty","aps","slice","jsSuffixRegExp","hasProp","obj","prop","call","normalize","name","baseName","nameParts","nameSegment","mapValue","foundMap","lastIndex","foundI","foundStarMap","starI","i","j","part","baseParts","split","map","starMap","length","nodeIdCompat","test","replace","charAt","concat","splice","join","makeRequire","relName","forceSync","args","arguments","push","apply","makeLoad","depName","value","callDep","Error","splitPrefix","prefix","index","indexOf","substring","makeRelParts","makeConfig","relParts","plugin","parts","relResourceName","f","n","pr","p","exports","e","module","id","uri","deps","callback","cjsModule","ret","usingExports","callbackType","load","undefined","alt","setTimeout","cfg","_defined","_$","$","console","error","Utils","getMethods","theClass","proto","methods","methodName","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","this","constructor","key","__super__","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","unshift","Array","argCount","calledConstructor","displayName","m","superMethod","calledMethod","originalMethod","decoratedMethod","d","Observable","listeners","on","event","trigger","params","_type","invoke","len","generateChars","chars","Math","floor","random","toString","bind","func","context","_convertData","data","originalKey","keys","dataLevel","k","toLowerCase","hasScroll","el","$el","overflowX","style","overflowY","innerHeight","scrollHeight","innerWidth","scrollWidth","escapeMarkup","markup","replaceMap","String","match","__cache","GetUniqueElementId","element","select2Id","getAttribute","setAttribute","StoreData","GetData","RemoveData","removeAttribute","copyNonInternalCssClasses","dest","src","destinationClasses","trim","filter","clazz","sourceClasses","replacements","Results","$element","options","dataAdapter","render","$results","get","attr","clear","empty","displayMessage","hideLoading","$message","message","append","className","hideMessages","find","remove","$options","results","sort","item","$option","option","children","position","$dropdown","sorter","highlightFirstItem","$selected","first","ensureHighlightVisible","setClasses","self","current","selected","selectedIds","s","each","classList","add","showLoading","loading","disabled","text","loadingMore","$loading","prepend","document","createElement","attrs","matches","window","Element","msMatchesSelector","webkitMatchesSelector","_resultId","title","role","val","label","template","$children","c","child","$child","$childrenContainer","container","$container","isOpen","removeAttr","$highlighted","getHighlightedResults","hasClass","currentIndex","nextIndex","$next","eq","currentOffset","offset","top","nextTop","nextOffset","scrollTop","outerHeight","nextBottom","mousewheel","bottom","deltaY","isAtTop","isAtBottom","height","preventDefault","stopPropagation","evt","$this","originalEvent","removeClass","destroy","offsetDelta","result","content","display","innerHTML","BACKSPACE","TAB","ENTER","SHIFT","CTRL","ALT","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","KEYS","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","which","update","_attachCloseHandler","_detachCloseHandler","activeElement","contains","body","$select","target","closest","off","isEnabled","isDisabled","SingleSelection","html","$rendered","selectionContainer","selection","formatted","MultipleSelection","parent","$selections","selectionIdPrefix","selectionId","removeItem","$remove","Placeholder","decorated","placeholder","normalizePlaceholder","_","createPlaceholder","$placeholder","placeholderTitle","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","Search","searchLabel","$search","$searchContainer","_transferTabIndex","resizeSearch","_keyUpPrevented","isDefaultPrevented","$previousChoice","last","searchRemoveChoice","msie","documentMode","disableInputEvents","type","handleSearch","searchHadFocus","input","term","css","width","SelectionCSS","selectionCssClass","addClass","EventRelay","relayEvents","preventableEvents","Event","Translation","dict","all","extend","translation","_cache","loadPath","path","translations","BaseAdapter","query","generateResultId","SelectAdapter","querySelectorAll","selectedElement","select","tagName","currentData","unselect","addOptions","textContent","innerText","normalizedData","_normalizeItem","matcher","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","replaceWith","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","defaults","q","transport","success","failure","$request","ajax","then","fail","_request","abort","request","isArray","status","url","delay","_queryTimeout","clearTimeout","Tags","tags","createTag","insertTag","t","tag","_removeOldTags","page","wrapper","checkChildren","toUpperCase","Tokenizer","tokenizer","dropdown","tokenData","separators","termChar","substr","MinimumInputLength","$e","minimumInputLength","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","maximumSelectionLength","_checkIfMaximumSelected","successCallback","count","Dropdown","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","isLoadMoreVisible","documentElement","loadMore","pagination","more","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","detach","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","parents","x","scrollLeft","y","ev","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","viewport","enoughRoomAbove","enoughRoomBelow","left","$offsetParent","offsetParent","parentOffset","isConnected","outerWidth","minWidth","appendTo","countResults","MinimumResultsForSearch","minimumResultsForSearch","Infinity","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","ctrlKey","metaKey","DropdownCSS","dropdownCssClass","TagsSearchHighlight","$firstOption","firstElement","errorLoading","inputTooLong","overChars","inputTooShort","maximumSelected","noResults","searching","removeAllItems","search","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","reset","tokenSeparators","resultsAdapter","selectOnClose","dropdownAdapter","multiple","SearchableDropdown","closeOnSelect","selectionAdapter","allowClear","language","_resolveLanguage","uniqueLanguages","l","_processTranslations","debug","stripDiacritics","a","amdLanguageBase","autocomplete","dropdownAutoWidth","original","scrollAfterSelect","templateResult","templateSelection","theme","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","isEmptyObject","isPlainObject","resolvedLanguages","baseLanguage","languageData","ex","warn","set","camelCase","convertedData","Options","fromElement","excludedData","dir","dataset","upperCaseLetter","letter","attributes","attributeName","dataName","dataValue","jquery","Select2","_generateId","tabindex","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","insertAfter","_resolveWidth","method","WIDTH","styleWidth","elementWidth","getComputedStyle","_syncA","_syncS","_syncSubtree","_observer","MutationObserver","mutations","observe","childList","subtree","nonRelayEvents","toggleDropdown","focus","altKey","close","open","_isChangeMutation","addedNodes","removedNodes","some","mutation","changed","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","hasFocus","enable","newVal","disconnect","removeData","thisMethods","instanceOptions","instance"],"sourceRoot":""}