{"version":3,"sources":["webpack:///./node_modules/select2/dist/js/select2.js"],"names":["_typeof","Symbol","iterator","obj","constructor","prototype","jQuery","S2","fn","select2","amd","requirejs","require","define","undef","main","_req","makeMap","handlers","defined","waiting","config","defining","hasOwn","Object","hasOwnProperty","aps","slice","jsSuffixRegExp","hasProp","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","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","appendMany","$element","$nodes","jquery","substr","$jqNodes","node","add","append","Results","options","dataAdapter","render","$results","get","attr","clear","empty","displayMessage","hideLoading","$message","message","className","hideMessages","find","remove","$options","results","sort","item","$option","option","children","position","$dropdown","sorter","highlightFirstItem","$selected","filter","first","ensureHighlightVisible","setClasses","self","current","selected","selectedIds","s","each","element","inArray","showLoading","loading","disabled","text","loadingMore","$loading","prepend","document","createElement","attrs","_resultId","title","role","val","setAttribute","label","template","$children","c","child","$child","$childrenContainer","container","$container","isOpen","removeAttr","$highlighted","getHighlightedResults","currentIndex","nextIndex","$next","eq","currentOffset","offset","top","nextTop","nextOffset","scrollTop","outerHeight","nextBottom","addClass","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","focus","_detachCloseHandler","window","activeElement","contains","body","$select","target","closest","off","SingleSelection","html","selectionContainer","selection","$rendered","formatted","MultipleSelection","parent","$selections","Placeholder","decorated","placeholder","normalizePlaceholder","_","createPlaceholder","$placeholder","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","unselectData","prevented","$remove","Search","$search","$searchContainer","_transferTabIndex","_keyUpPrevented","isDefaultPrevented","$previousChoice","prev","searchRemoveChoice","msie","documentMode","disableInputEvents","type","handleSearch","searchHadFocus","resizeSearch","input","term","css","width","EventRelay","relayEvents","preventableEvents","Event","Translation","dict","all","extend","translation","_cache","loadPath","path","translations","BaseAdapter","query","generateResultId","SelectAdapter","select","is","currentData","unselect","removeData","matches","addOptions","textContent","innerText","normalizedData","_normalizeItem","isPlainObject","matcher","ArrayAdapter","convertToOptions","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","replaceWith","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","defaults","q","transport","success","failure","$request","ajax","then","fail","_request","isFunction","abort","request","isArray","status","url","delay","_queryTimeout","clearTimeout","Tags","tags","createTag","insertTag","t","tag","_removeOldTags","page","wrapper","checkChildren","toUpperCase","trim","_lastTag","Tokenizer","tokenizer","dropdown","tokenData","separators","termChar","MinimumInputLength","$e","minimumInputLength","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","maximumSelectionLength","count","Dropdown","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","isLoadMoreVisible","documentElement","loadMore","pagination","more","AttachBody","$dropdownParent","setupResultsEvents","_showDropdown","_attachPositioningHandler","_positionDropdown","_resizeDropdown","_hideDropdown","_detachPositioningHandler","$dropdownContainer","detach","scrollEvent","resizeEvent","orientationEvent","$watchers","parents","x","scrollLeft","y","ev","$window","isCurrentlyAbove","hasClass","isCurrentlyBelow","newDirection","viewport","enoughRoomAbove","enoughRoomBelow","left","$offsetParent","offsetParent","parentOffset","outerWidth","minWidth","appendTo","MinimumResultsForSearch","minimumResultsForSearch","Infinity","countResults","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","ctrlKey","errorLoading","inputTooLong","overChars","inputTooShort","maximumSelected","noResults","searching","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","reset","tokenSeparators","Query","amdBase","initSelection","InitSelection","resultsAdapter","selectOnClose","dropdownAdapter","multiple","SearchableDropdown","closeOnSelect","dropdownCssClass","dropdownCss","adaptDropdownCssClass","DropdownCSS","selectionAdapter","allowClear","containerCssClass","containerCss","adaptContainerCssClass","ContainerCSS","language","baseLanguage","languages","languageNames","l","amdLanguageBase","ex","debug","warn","baseTranslation","customTranslation","stripDiacritics","a","dropdownAutoWidth","original","templateResult","templateSelection","theme","set","camelCase","convertedData","Options","fromElement","InputCompat","excludedData","dir","dataset","Select2","_generateId","tabindex","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","insertAfter","_resolveWidth","method","WIDTH","styleWidth","elementWidth","_syncA","_syncS","_syncSubtree","attachEvent","observer","MutationObserver","WebKitMutationObserver","MozMutationObserver","_observer","mutations","observe","attributes","childList","subtree","addEventListener","nonRelayEvents","toggleDropdown","altKey","close","open","changed","nodeName","addedNodes","removedNodes","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","hasFocus","enable","newVal","detachEvent","disconnect","removeEventListener","thisMethods","instanceOptions","instance"],"mappings":"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SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAQ,KACR,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,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","file":"js/vendors~select2-825b69dea8d2fa37d89a.chunk.js","sourcesContent":["function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n/*!\n * Select2 4.0.5\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 === \"undefined\" ? \"undefined\" : _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        } 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    }\n    var S2;\n    (function () {\n      if (!S2 || !S2.requirejs) {\n        if (!S2) {\n          S2 = {};\n        } else {\n          require = S2;\n        }\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\n        var requirejs, require, define;\n        (function (undef) {\n          var main,\n            _req,\n            makeMap,\n            handlers,\n            defined = {},\n            waiting = {},\n            config = {},\n            defining = {},\n            hasOwn = Object.prototype.hasOwnProperty,\n            aps = [].slice,\n            jsSuffixRegExp = /\\.js$/;\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,\n              nameSegment,\n              mapValue,\n              foundMap,\n              lastIndex,\n              foundI,\n              foundStarMap,\n              starI,\n              i,\n              j,\n              part,\n              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              for (i = nameParts.length; i > 0; i -= 1) {\n                nameSegment = nameParts.slice(0, i).join(\"/\");\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                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              if (!foundMap && foundStarMap) {\n                foundMap = foundStarMap;\n                foundI = starI;\n              }\n              if (foundMap) {\n                nameParts.splice(0, foundI, foundMap);\n                name = nameParts.join('/');\n              }\n            }\n            return name;\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          function makeNormalize(relName) {\n            return function (name) {\n              return normalize(name, relName);\n            };\n          }\n          function makeLoad(depName) {\n            return function (value) {\n              defined[depName] = value;\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            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 makeMap(name, relParts) {\n            var plugin,\n              parts = splitPrefix(name),\n              prefix = parts[0],\n              relResourceName = relParts[1];\n            name = parts[1];\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,\n              //fullName\n              n: name,\n              pr: prefix,\n              p: plugin\n            };\n          };\n          function makeConfig(name) {\n            return function () {\n              return config && config.config && config.config[name] || {};\n            };\n          }\n          handlers = {\n            require: function require(name) {\n              return makeRequire(name);\n            },\n            exports: function exports(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 module(name) {\n              return {\n                id: name,\n                uri: '',\n                exports: defined[name],\n                config: makeConfig(name)\n              };\n            }\n          };\n          main = function main(name, deps, callback, relName) {\n            var cjsModule,\n              depName,\n              ret,\n              map,\n              i,\n              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) || hasProp(waiting, depName) || 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              ret = callback ? callback.apply(defined[name], args) : undefined;\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 && 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          requirejs = require = _req = function req(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              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            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          define = function define(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            if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n              waiting[name] = [name, deps, callback];\n            }\n          };\n          define.amd = {\n            jQuery: true\n          };\n        })();\n        S2.requirejs = requirejs;\n        S2.require = require;\n        S2.define = define;\n      }\n    })();\n    S2.define(\"almond\", function () {});\n\n    /* global jQuery:false, $:false */\n    S2.define('jquery', [], function () {\n      var _$ = jQuery || $;\n      if (_$ == null && console && console.error) {\n        console.error('Select2: An instance of jQuery or a jQuery-compatible library was not ' + 'found. Make sure that you are including jQuery before Select2 on your ' + 'web page.');\n      }\n      return _$;\n    });\n    S2.define('select2/utils', ['jquery'], function ($) {\n      var Utils = {};\n      Utils.Extend = function (ChildClass, SuperClass) {\n        var __hasProp = {}.hasOwnProperty;\n        function BaseConstructor() {\n          this.constructor = ChildClass;\n        }\n        for (var key in SuperClass) {\n          if (__hasProp.call(SuperClass, key)) {\n            ChildClass[key] = SuperClass[key];\n          }\n        }\n        BaseConstructor.prototype = SuperClass.prototype;\n        ChildClass.prototype = new BaseConstructor();\n        ChildClass.__super__ = SuperClass.prototype;\n        return ChildClass;\n      };\n      function getMethods(theClass) {\n        var proto = theClass.prototype;\n        var methods = [];\n        for (var methodName in proto) {\n          var m = proto[methodName];\n          if (typeof m !== 'function') {\n            continue;\n          }\n          if (methodName === 'constructor') {\n            continue;\n          }\n          methods.push(methodName);\n        }\n        return methods;\n      }\n      Utils.Decorate = function (SuperClass, DecoratorClass) {\n        var decoratedMethods = getMethods(DecoratorClass);\n        var superMethods = getMethods(SuperClass);\n        function DecoratedClass() {\n          var unshift = Array.prototype.unshift;\n          var argCount = DecoratorClass.prototype.constructor.length;\n          var calledConstructor = SuperClass.prototype.constructor;\n          if (argCount > 0) {\n            unshift.call(arguments, SuperClass.prototype.constructor);\n            calledConstructor = DecoratorClass.prototype.constructor;\n          }\n          calledConstructor.apply(this, arguments);\n        }\n        DecoratorClass.displayName = SuperClass.displayName;\n        function ctr() {\n          this.constructor = DecoratedClass;\n        }\n        DecoratedClass.prototype = new ctr();\n        for (var m = 0; m < superMethods.length; m++) {\n          var superMethod = superMethods[m];\n          DecoratedClass.prototype[superMethod] = SuperClass.prototype[superMethod];\n        }\n        var calledMethod = function calledMethod(methodName) {\n          // Stub out the original method if it's not decorating an actual method\n          var originalMethod = function originalMethod() {};\n          if (methodName in DecoratedClass.prototype) {\n            originalMethod = DecoratedClass.prototype[methodName];\n          }\n          var decoratedMethod = DecoratorClass.prototype[methodName];\n          return function () {\n            var unshift = Array.prototype.unshift;\n            unshift.call(arguments, originalMethod);\n            return decoratedMethod.apply(this, arguments);\n          };\n        };\n        for (var d = 0; d < decoratedMethods.length; d++) {\n          var decoratedMethod = decoratedMethods[d];\n          DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n        }\n        return DecoratedClass;\n      };\n      var Observable = function Observable() {\n        this.listeners = {};\n      };\n      Observable.prototype.on = function (event, callback) {\n        this.listeners = this.listeners || {};\n        if (event in this.listeners) {\n          this.listeners[event].push(callback);\n        } else {\n          this.listeners[event] = [callback];\n        }\n      };\n      Observable.prototype.trigger = function (event) {\n        var slice = Array.prototype.slice;\n        var params = slice.call(arguments, 1);\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        if (event in this.listeners) {\n          this.invoke(this.listeners[event], slice.call(arguments, 1));\n        }\n        if ('*' in this.listeners) {\n          this.invoke(this.listeners['*'], arguments);\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      Utils.Observable = Observable;\n      Utils.generateChars = function (length) {\n        var chars = '';\n        for (var i = 0; i < length; i++) {\n          var randomChar = Math.floor(Math.random() * 36);\n          chars += randomChar.toString(36);\n        }\n        return chars;\n      };\n      Utils.bind = function (func, context) {\n        return function () {\n          func.apply(context, arguments);\n        };\n      };\n      Utils._convertData = function (data) {\n        for (var originalKey in data) {\n          var keys = originalKey.split('-');\n          var dataLevel = data;\n          if (keys.length === 1) {\n            continue;\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            if (!(key in dataLevel)) {\n              dataLevel[key] = {};\n            }\n            if (k == keys.length - 1) {\n              dataLevel[key] = data[originalKey];\n            }\n            dataLevel = dataLevel[key];\n          }\n          delete data[originalKey];\n        }\n        return data;\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 && (overflowY === 'hidden' || overflowY === 'visible')) {\n          return false;\n        }\n        if (overflowX === 'scroll' || overflowY === 'scroll') {\n          return true;\n        }\n        return $el.innerHeight() < el.scrollHeight || $el.innerWidth() < el.scrollWidth;\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        return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n          return replaceMap[match];\n        });\n      };\n\n      // Append an array of jQuery nodes to a given element.\n      Utils.appendMany = function ($element, $nodes) {\n        // jQuery 1.7.x does not support $.fn.append() with an array\n        // Fall back to a jQuery object collection using $.fn.add()\n        if ($.fn.jquery.substr(0, 3) === '1.7') {\n          var $jqNodes = $();\n          $.map($nodes, function (node) {\n            $jqNodes = $jqNodes.add(node);\n          });\n          $nodes = $jqNodes;\n        }\n        $element.append($nodes);\n      };\n      return Utils;\n    });\n    S2.define('select2/results', ['jquery', './utils'], function ($, Utils) {\n      function Results($element, options, dataAdapter) {\n        this.$element = $element;\n        this.data = dataAdapter;\n        this.options = options;\n        Results.__super__.constructor.call(this);\n      }\n      Utils.Extend(Results, Utils.Observable);\n      Results.prototype.render = function () {\n        var $results = $('<ul class=\"select2-results__options\" role=\"tree\"></ul>');\n        if (this.options.get('multiple')) {\n          $results.attr('aria-multiselectable', 'true');\n        }\n        this.$results = $results;\n        return $results;\n      };\n      Results.prototype.clear = function () {\n        this.$results.empty();\n      };\n      Results.prototype.displayMessage = function (params) {\n        var escapeMarkup = this.options.get('escapeMarkup');\n        this.clear();\n        this.hideLoading();\n        var $message = $('<li role=\"treeitem\" aria-live=\"assertive\"' + ' class=\"select2-results__option\"></li>');\n        var message = this.options.get('translations').get(params.message);\n        $message.append(escapeMarkup(message(params.args)));\n        $message[0].className += ' select2-results__message';\n        this.$results.append($message);\n      };\n      Results.prototype.hideMessages = function () {\n        this.$results.find('.select2-results__message').remove();\n      };\n      Results.prototype.append = function (data) {\n        this.hideLoading();\n        var $options = [];\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          return;\n        }\n        data.results = this.sort(data.results);\n        for (var d = 0; d < data.results.length; d++) {\n          var item = data.results[d];\n          var $option = this.option(item);\n          $options.push($option);\n        }\n        this.$results.append($options);\n      };\n      Results.prototype.position = function ($results, $dropdown) {\n        var $resultsContainer = $dropdown.find('.select2-results');\n        $resultsContainer.append($results);\n      };\n      Results.prototype.sort = function (data) {\n        var sorter = this.options.get('sorter');\n        return sorter(data);\n      };\n      Results.prototype.highlightFirstItem = function () {\n        var $options = this.$results.find('.select2-results__option[aria-selected]');\n        var $selected = $options.filter('[aria-selected=true]');\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        this.ensureHighlightVisible();\n      };\n      Results.prototype.setClasses = function () {\n        var self = this;\n        this.data.current(function (selected) {\n          var selectedIds = $.map(selected, function (s) {\n            return s.id.toString();\n          });\n          var $options = self.$results.find('.select2-results__option[aria-selected]');\n          $options.each(function () {\n            var $option = $(this);\n            var item = $.data(this, 'data');\n\n            // id needs to be converted to a string when comparing\n            var id = '' + item.id;\n            if (item.element != null && item.element.selected || item.element == null && $.inArray(id, selectedIds) > -1) {\n              $option.attr('aria-selected', 'true');\n            } else {\n              $option.attr('aria-selected', 'false');\n            }\n          });\n        });\n      };\n      Results.prototype.showLoading = function (params) {\n        this.hideLoading();\n        var loadingMore = this.options.get('translations').get('searching');\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        this.$results.prepend($loading);\n      };\n      Results.prototype.hideLoading = function () {\n        this.$results.find('.loading-results').remove();\n      };\n      Results.prototype.option = function (data) {\n        var option = document.createElement('li');\n        option.className = 'select2-results__option';\n        var attrs = {\n          'role': 'treeitem',\n          'aria-selected': 'false'\n        };\n        if (data.disabled) {\n          delete attrs['aria-selected'];\n          attrs['aria-disabled'] = 'true';\n        }\n        if (data.id == null) {\n          delete attrs['aria-selected'];\n        }\n        if (data._resultId != null) {\n          option.id = data._resultId;\n        }\n        if (data.title) {\n          option.title = data.title;\n        }\n        if (data.children) {\n          attrs.role = 'group';\n          attrs['aria-label'] = data.text;\n          delete attrs['aria-selected'];\n        }\n        for (var attr in attrs) {\n          var val = attrs[attr];\n          option.setAttribute(attr, val);\n        }\n        if (data.children) {\n          var $option = $(option);\n          var label = document.createElement('strong');\n          label.className = 'select2-results__group';\n          var $label = $(label);\n          this.template(data, label);\n          var $children = [];\n          for (var c = 0; c < data.children.length; c++) {\n            var child = data.children[c];\n            var $child = this.option(child);\n            $children.push($child);\n          }\n          var $childrenContainer = $('<ul></ul>', {\n            'class': 'select2-results__options select2-results__options--nested'\n          });\n          $childrenContainer.append($children);\n          $option.append(label);\n          $option.append($childrenContainer);\n        } else {\n          this.template(data, option);\n        }\n        $.data(option, 'data', data);\n        return option;\n      };\n      Results.prototype.bind = function (container, $container) {\n        var self = this;\n        var id = container.id + '-results';\n        this.$results.attr('id', id);\n        container.on('results:all', function (params) {\n          self.clear();\n          self.append(params.data);\n          if (container.isOpen()) {\n            self.setClasses();\n            self.highlightFirstItem();\n          }\n        });\n        container.on('results:append', function (params) {\n          self.append(params.data);\n          if (container.isOpen()) {\n            self.setClasses();\n          }\n        });\n        container.on('query', function (params) {\n          self.hideMessages();\n          self.showLoading(params);\n        });\n        container.on('select', function () {\n          if (!container.isOpen()) {\n            return;\n          }\n          self.setClasses();\n          self.highlightFirstItem();\n        });\n        container.on('unselect', function () {\n          if (!container.isOpen()) {\n            return;\n          }\n          self.setClasses();\n          self.highlightFirstItem();\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          self.setClasses();\n          self.ensureHighlightVisible();\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        container.on('results:toggle', function () {\n          var $highlighted = self.getHighlightedResults();\n          if ($highlighted.length === 0) {\n            return;\n          }\n          $highlighted.trigger('mouseup');\n        });\n        container.on('results:select', function () {\n          var $highlighted = self.getHighlightedResults();\n          if ($highlighted.length === 0) {\n            return;\n          }\n          var data = $highlighted.data('data');\n          if ($highlighted.attr('aria-selected') == 'true') {\n            self.trigger('close', {});\n          } else {\n            self.trigger('select', {\n              data: data\n            });\n          }\n        });\n        container.on('results:previous', function () {\n          var $highlighted = self.getHighlightedResults();\n          var $options = self.$results.find('[aria-selected]');\n          var currentIndex = $options.index($highlighted);\n\n          // If we are already at te top, don't move further\n          if (currentIndex === 0) {\n            return;\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          var $next = $options.eq(nextIndex);\n          $next.trigger('mouseenter');\n          var currentOffset = self.$results.offset().top;\n          var nextTop = $next.offset().top;\n          var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n          if (nextIndex === 0) {\n            self.$results.scrollTop(0);\n          } else if (nextTop - currentOffset < 0) {\n            self.$results.scrollTop(nextOffset);\n          }\n        });\n        container.on('results:next', function () {\n          var $highlighted = self.getHighlightedResults();\n          var $options = self.$results.find('[aria-selected]');\n          var currentIndex = $options.index($highlighted);\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          var $next = $options.eq(nextIndex);\n          $next.trigger('mouseenter');\n          var currentOffset = self.$results.offset().top + self.$results.outerHeight(false);\n          var nextBottom = $next.offset().top + $next.outerHeight(false);\n          var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n          if (nextIndex === 0) {\n            self.$results.scrollTop(0);\n          } else if (nextBottom > currentOffset) {\n            self.$results.scrollTop(nextOffset);\n          }\n        });\n        container.on('results:focus', function (params) {\n          params.element.addClass('select2-results__option--highlighted');\n        });\n        container.on('results:message', function (params) {\n          self.displayMessage(params);\n        });\n        if ($.fn.mousewheel) {\n          this.$results.on('mousewheel', function (e) {\n            var top = self.$results.scrollTop();\n            var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n            var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n            var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n            if (isAtTop) {\n              self.$results.scrollTop(0);\n              e.preventDefault();\n              e.stopPropagation();\n            } else if (isAtBottom) {\n              self.$results.scrollTop(self.$results.get(0).scrollHeight - self.$results.height());\n              e.preventDefault();\n              e.stopPropagation();\n            }\n          });\n        }\n        this.$results.on('mouseup', '.select2-results__option[aria-selected]', function (evt) {\n          var $this = $(this);\n          var data = $this.data('data');\n          if ($this.attr('aria-selected') === 'true') {\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            return;\n          }\n          self.trigger('select', {\n            originalEvent: evt,\n            data: data\n          });\n        });\n        this.$results.on('mouseenter', '.select2-results__option[aria-selected]', function (evt) {\n          var data = $(this).data('data');\n          self.getHighlightedResults().removeClass('select2-results__option--highlighted');\n          self.trigger('results:focus', {\n            data: data,\n            element: $(this)\n          });\n        });\n      };\n      Results.prototype.getHighlightedResults = function () {\n        var $highlighted = this.$results.find('.select2-results__option--highlighted');\n        return $highlighted;\n      };\n      Results.prototype.destroy = function () {\n        this.$results.remove();\n      };\n      Results.prototype.ensureHighlightVisible = function () {\n        var $highlighted = this.getHighlightedResults();\n        if ($highlighted.length === 0) {\n          return;\n        }\n        var $options = this.$results.find('[aria-selected]');\n        var currentIndex = $options.index($highlighted);\n        var currentOffset = this.$results.offset().top;\n        var nextTop = $highlighted.offset().top;\n        var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n        var offsetDelta = nextTop - currentOffset;\n        nextOffset -= $highlighted.outerHeight(false) * 2;\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      Results.prototype.template = function (result, container) {\n        var template = this.options.get('templateResult');\n        var escapeMarkup = this.options.get('escapeMarkup');\n        var content = template(result, container);\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      return Results;\n    });\n    S2.define('select2/keys', [], 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      return KEYS;\n    });\n    S2.define('select2/selection/base', ['jquery', '../utils', '../keys'], function ($, Utils, KEYS) {\n      function BaseSelection($element, options) {\n        this.$element = $element;\n        this.options = options;\n        BaseSelection.__super__.constructor.call(this);\n      }\n      Utils.Extend(BaseSelection, Utils.Observable);\n      BaseSelection.prototype.render = function () {\n        var $selection = $('<span class=\"select2-selection\" role=\"combobox\" ' + ' aria-haspopup=\"true\" aria-expanded=\"false\">' + '</span>');\n        this._tabindex = 0;\n        if (this.$element.data('old-tabindex') != null) {\n          this._tabindex = this.$element.data('old-tabindex');\n        } else if (this.$element.attr('tabindex') != null) {\n          this._tabindex = this.$element.attr('tabindex');\n        }\n        $selection.attr('title', this.$element.attr('title'));\n        $selection.attr('tabindex', this._tabindex);\n        this.$selection = $selection;\n        return $selection;\n      };\n      BaseSelection.prototype.bind = function (container, $container) {\n        var self = this;\n        var id = container.id + '-container';\n        var resultsId = container.id + '-results';\n        this.container = container;\n        this.$selection.on('focus', function (evt) {\n          self.trigger('focus', evt);\n        });\n        this.$selection.on('blur', function (evt) {\n          self._handleBlur(evt);\n        });\n        this.$selection.on('keydown', function (evt) {\n          self.trigger('keypress', evt);\n          if (evt.which === KEYS.SPACE) {\n            evt.preventDefault();\n          }\n        });\n        container.on('results:focus', function (params) {\n          self.$selection.attr('aria-activedescendant', params.data._resultId);\n        });\n        container.on('selection:update', function (params) {\n          self.update(params.data);\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          self._attachCloseHandler(container);\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          self.$selection.focus();\n          self._detachCloseHandler(container);\n        });\n        container.on('enable', function () {\n          self.$selection.attr('tabindex', self._tabindex);\n        });\n        container.on('disable', function () {\n          self.$selection.attr('tabindex', '-1');\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 (document.activeElement == self.$selection[0] || $.contains(self.$selection[0], document.activeElement)) {\n            return;\n          }\n          self.trigger('blur', evt);\n        }, 1);\n      };\n      BaseSelection.prototype._attachCloseHandler = function (container) {\n        var self = this;\n        $(document.body).on('mousedown.select2.' + container.id, function (e) {\n          var $target = $(e.target);\n          var $select = $target.closest('.select2');\n          var $all = $('.select2.select2-container--open');\n          $all.each(function () {\n            var $this = $(this);\n            if (this == $select[0]) {\n              return;\n            }\n            var $element = $this.data('element');\n            $element.select2('close');\n          });\n        });\n      };\n      BaseSelection.prototype._detachCloseHandler = function (container) {\n        $(document.body).off('mousedown.select2.' + container.id);\n      };\n      BaseSelection.prototype.position = function ($selection, $container) {\n        var $selectionContainer = $container.find('.selection');\n        $selectionContainer.append($selection);\n      };\n      BaseSelection.prototype.destroy = function () {\n        this._detachCloseHandler(this.container);\n      };\n      BaseSelection.prototype.update = function (data) {\n        throw new Error('The `update` method must be defined in child classes.');\n      };\n      return BaseSelection;\n    });\n    S2.define('select2/selection/single', ['jquery', './base', '../utils', '../keys'], function ($, BaseSelection, Utils, KEYS) {\n      function SingleSelection() {\n        SingleSelection.__super__.constructor.apply(this, arguments);\n      }\n      Utils.Extend(SingleSelection, BaseSelection);\n      SingleSelection.prototype.render = function () {\n        var $selection = SingleSelection.__super__.render.call(this);\n        $selection.addClass('select2-selection--single');\n        $selection.html('<span class=\"select2-selection__rendered\"></span>' + '<span class=\"select2-selection__arrow\" role=\"presentation\">' + '<b role=\"presentation\"></b>' + '</span>');\n        return $selection;\n      };\n      SingleSelection.prototype.bind = function (container, $container) {\n        var self = this;\n        SingleSelection.__super__.bind.apply(this, arguments);\n        var id = container.id + '-container';\n        this.$selection.find('.select2-selection__rendered').attr('id', id);\n        this.$selection.attr('aria-labelledby', id);\n        this.$selection.on('mousedown', function (evt) {\n          // Only respond to left clicks\n          if (evt.which !== 1) {\n            return;\n          }\n          self.trigger('toggle', {\n            originalEvent: evt\n          });\n        });\n        this.$selection.on('focus', function (evt) {\n          // User focuses on the container\n        });\n        this.$selection.on('blur', function (evt) {\n          // User exits the container\n        });\n        container.on('focus', function (evt) {\n          if (!container.isOpen()) {\n            self.$selection.focus();\n          }\n        });\n        container.on('selection:update', function (params) {\n          self.update(params.data);\n        });\n      };\n      SingleSelection.prototype.clear = function () {\n        this.$selection.find('.select2-selection__rendered').empty();\n      };\n      SingleSelection.prototype.display = function (data, container) {\n        var template = this.options.get('templateSelection');\n        var escapeMarkup = this.options.get('escapeMarkup');\n        return escapeMarkup(template(data, container));\n      };\n      SingleSelection.prototype.selectionContainer = function () {\n        return $('<span></span>');\n      };\n      SingleSelection.prototype.update = function (data) {\n        if (data.length === 0) {\n          this.clear();\n          return;\n        }\n        var selection = data[0];\n        var $rendered = this.$selection.find('.select2-selection__rendered');\n        var formatted = this.display(selection, $rendered);\n        $rendered.empty().append(formatted);\n        $rendered.prop('title', selection.title || selection.text);\n      };\n      return SingleSelection;\n    });\n    S2.define('select2/selection/multiple', ['jquery', './base', '../utils'], function ($, BaseSelection, Utils) {\n      function MultipleSelection($element, options) {\n        MultipleSelection.__super__.constructor.apply(this, arguments);\n      }\n      Utils.Extend(MultipleSelection, BaseSelection);\n      MultipleSelection.prototype.render = function () {\n        var $selection = MultipleSelection.__super__.render.call(this);\n        $selection.addClass('select2-selection--multiple');\n        $selection.html('<ul class=\"select2-selection__rendered\"></ul>');\n        return $selection;\n      };\n      MultipleSelection.prototype.bind = function (container, $container) {\n        var self = this;\n        MultipleSelection.__super__.bind.apply(this, arguments);\n        this.$selection.on('click', function (evt) {\n          self.trigger('toggle', {\n            originalEvent: evt\n          });\n        });\n        this.$selection.on('click', '.select2-selection__choice__remove', function (evt) {\n          // Ignore the event if it is disabled\n          if (self.options.get('disabled')) {\n            return;\n          }\n          var $remove = $(this);\n          var $selection = $remove.parent();\n          var data = $selection.data('data');\n          self.trigger('unselect', {\n            originalEvent: evt,\n            data: data\n          });\n        });\n      };\n      MultipleSelection.prototype.clear = function () {\n        this.$selection.find('.select2-selection__rendered').empty();\n      };\n      MultipleSelection.prototype.display = function (data, container) {\n        var template = this.options.get('templateSelection');\n        var escapeMarkup = this.options.get('escapeMarkup');\n        return escapeMarkup(template(data, container));\n      };\n      MultipleSelection.prototype.selectionContainer = function () {\n        var $container = $('<li class=\"select2-selection__choice\">' + '<span class=\"select2-selection__choice__remove\" role=\"presentation\">' + '&times;' + '</span>' + '</li>');\n        return $container;\n      };\n      MultipleSelection.prototype.update = function (data) {\n        this.clear();\n        if (data.length === 0) {\n          return;\n        }\n        var $selections = [];\n        for (var d = 0; d < data.length; d++) {\n          var selection = data[d];\n          var $selection = this.selectionContainer();\n          var formatted = this.display(selection, $selection);\n          $selection.append(formatted);\n          $selection.prop('title', selection.title || selection.text);\n          $selection.data('data', selection);\n          $selections.push($selection);\n        }\n        var $rendered = this.$selection.find('.select2-selection__rendered');\n        Utils.appendMany($rendered, $selections);\n      };\n      return MultipleSelection;\n    });\n    S2.define('select2/selection/placeholder', ['../utils'], function (Utils) {\n      function Placeholder(decorated, $element, options) {\n        this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n        decorated.call(this, $element, options);\n      }\n      Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n        if (typeof placeholder === 'string') {\n          placeholder = {\n            id: '',\n            text: placeholder\n          };\n        }\n        return placeholder;\n      };\n      Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n        var $placeholder = this.selectionContainer();\n        $placeholder.html(this.display(placeholder));\n        $placeholder.addClass('select2-selection__placeholder').removeClass('select2-selection__choice');\n        return $placeholder;\n      };\n      Placeholder.prototype.update = function (decorated, data) {\n        var singlePlaceholder = data.length == 1 && data[0].id != this.placeholder.id;\n        var multipleSelections = data.length > 1;\n        if (multipleSelections || singlePlaceholder) {\n          return decorated.call(this, data);\n        }\n        this.clear();\n        var $placeholder = this.createPlaceholder(this.placeholder);\n        this.$selection.find('.select2-selection__rendered').append($placeholder);\n      };\n      return Placeholder;\n    });\n    S2.define('select2/selection/allowClear', ['jquery', '../keys'], function ($, KEYS) {\n      function AllowClear() {}\n      AllowClear.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        decorated.call(this, container, $container);\n        if (this.placeholder == null) {\n          if (this.options.get('debug') && window.console && console.error) {\n            console.error('Select2: The `allowClear` option should be used in combination ' + 'with the `placeholder` option.');\n          }\n        }\n        this.$selection.on('mousedown', '.select2-selection__clear', function (evt) {\n          self._handleClear(evt);\n        });\n        container.on('keypress', function (evt) {\n          self._handleKeyboardClear(evt, container);\n        });\n      };\n      AllowClear.prototype._handleClear = function (_, evt) {\n        // Ignore the event if it is disabled\n        if (this.options.get('disabled')) {\n          return;\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        evt.stopPropagation();\n        var data = $clear.data('data');\n        for (var d = 0; d < data.length; d++) {\n          var 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            return;\n          }\n        }\n        this.$element.val(this.placeholder.id).trigger('change');\n        this.trigger('toggle', {});\n      };\n      AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n        if (container.isOpen()) {\n          return;\n        }\n        if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n          this._handleClear(evt);\n        }\n      };\n      AllowClear.prototype.update = function (decorated, data) {\n        decorated.call(this, data);\n        if (this.$selection.find('.select2-selection__placeholder').length > 0 || data.length === 0) {\n          return;\n        }\n        var $remove = $('<span class=\"select2-selection__clear\">' + '&times;' + '</span>');\n        $remove.data('data', data);\n        this.$selection.find('.select2-selection__rendered').prepend($remove);\n      };\n      return AllowClear;\n    });\n    S2.define('select2/selection/search', ['jquery', '../utils', '../keys'], function ($, Utils, KEYS) {\n      function Search(decorated, $element, options) {\n        decorated.call(this, $element, options);\n      }\n      Search.prototype.render = function (decorated) {\n        var $search = $('<li class=\"select2-search select2-search--inline\">' + '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' + ' autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"none\"' + ' spellcheck=\"false\" role=\"textbox\" aria-autocomplete=\"list\" />' + '</li>');\n        this.$searchContainer = $search;\n        this.$search = $search.find('input');\n        var $rendered = decorated.call(this);\n        this._transferTabIndex();\n        return $rendered;\n      };\n      Search.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        decorated.call(this, container, $container);\n        container.on('open', function () {\n          self.$search.trigger('focus');\n        });\n        container.on('close', function () {\n          self.$search.val('');\n          self.$search.removeAttr('aria-activedescendant');\n          self.$search.trigger('focus');\n        });\n        container.on('enable', function () {\n          self.$search.prop('disabled', false);\n          self._transferTabIndex();\n        });\n        container.on('disable', function () {\n          self.$search.prop('disabled', true);\n        });\n        container.on('focus', function (evt) {\n          self.$search.trigger('focus');\n        });\n        container.on('results:focus', function (params) {\n          self.$search.attr('aria-activedescendant', params.id);\n        });\n        this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n          self.trigger('focus', evt);\n        });\n        this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n          self._handleBlur(evt);\n        });\n        this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n          evt.stopPropagation();\n          self.trigger('keypress', evt);\n          self._keyUpPrevented = evt.isDefaultPrevented();\n          var key = evt.which;\n          if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n            var $previousChoice = self.$searchContainer.prev('.select2-selection__choice');\n            if ($previousChoice.length > 0) {\n              var item = $previousChoice.data('data');\n              self.searchRemoveChoice(item);\n              evt.preventDefault();\n            }\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('input.searchcheck', '.select2-search--inline', 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        this.$selection.on('keyup.search input.search', '.select2-search--inline', 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          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          self.handleSearch(evt);\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      Search.prototype.createPlaceholder = function (decorated, placeholder) {\n        this.$search.attr('placeholder', placeholder.text);\n      };\n      Search.prototype.update = function (decorated, data) {\n        var searchHadFocus = this.$search[0] == document.activeElement;\n        this.$search.attr('placeholder', '');\n        decorated.call(this, data);\n        this.$selection.find('.select2-selection__rendered').append(this.$searchContainer);\n        this.resizeSearch();\n        if (searchHadFocus) {\n          this.$search.focus();\n        }\n      };\n      Search.prototype.handleSearch = function () {\n        this.resizeSearch();\n        if (!this._keyUpPrevented) {\n          var input = this.$search.val();\n          this.trigger('query', {\n            term: input\n          });\n        }\n        this._keyUpPrevented = false;\n      };\n      Search.prototype.searchRemoveChoice = function (decorated, item) {\n        this.trigger('unselect', {\n          data: item\n        });\n        this.$search.val(item.text);\n        this.handleSearch();\n      };\n      Search.prototype.resizeSearch = function () {\n        this.$search.css('width', '25px');\n        var width = '';\n        if (this.$search.attr('placeholder') !== '') {\n          width = this.$selection.find('.select2-selection__rendered').innerWidth();\n        } else {\n          var minimumWidth = this.$search.val().length + 1;\n          width = minimumWidth * 0.75 + 'em';\n        }\n        this.$search.css('width', width);\n      };\n      return Search;\n    });\n    S2.define('select2/selection/eventRelay', ['jquery'], function ($) {\n      function EventRelay() {}\n      EventRelay.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        var relayEvents = ['open', 'opening', 'close', 'closing', 'select', 'selecting', 'unselect', 'unselecting'];\n        var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting'];\n        decorated.call(this, container, $container);\n        container.on('*', function (name, params) {\n          // Ignore events that should not be relayed\n          if ($.inArray(name, relayEvents) === -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          self.$element.trigger(evt);\n\n          // Only handle preventable events if it was one\n          if ($.inArray(name, preventableEvents) === -1) {\n            return;\n          }\n          params.prevented = evt.isDefaultPrevented();\n        });\n      };\n      return EventRelay;\n    });\n    S2.define('select2/translation', ['jquery', 'require'], function ($, require) {\n      function Translation(dict) {\n        this.dict = dict || {};\n      }\n      Translation.prototype.all = function () {\n        return this.dict;\n      };\n      Translation.prototype.get = function (key) {\n        return this.dict[key];\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      Translation.loadPath = function (path) {\n        if (!(path in Translation._cache)) {\n          var translations = require(path);\n          Translation._cache[path] = translations;\n        }\n        return new Translation(Translation._cache[path]);\n      };\n      return Translation;\n    });\n    S2.define('select2/diacritics', [], function () {\n      var diacritics = {\n        \"\\u24B6\": 'A',\n        \"\\uFF21\": 'A',\n        \"\\xC0\": 'A',\n        \"\\xC1\": 'A',\n        \"\\xC2\": 'A',\n        \"\\u1EA6\": 'A',\n        \"\\u1EA4\": 'A',\n        \"\\u1EAA\": 'A',\n        \"\\u1EA8\": 'A',\n        \"\\xC3\": '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        \"\\xC4\": 'A',\n        \"\\u01DE\": 'A',\n        \"\\u1EA2\": 'A',\n        \"\\xC5\": '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        \"\\xC6\": '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        \"\\xC7\": '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        \"\\xC8\": 'E',\n        \"\\xC9\": 'E',\n        \"\\xCA\": '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        \"\\xCB\": '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        \"\\xCC\": 'I',\n        \"\\xCD\": 'I',\n        \"\\xCE\": 'I',\n        \"\\u0128\": 'I',\n        \"\\u012A\": 'I',\n        \"\\u012C\": 'I',\n        \"\\u0130\": 'I',\n        \"\\xCF\": '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        \"\\xD1\": '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        \"\\xD2\": 'O',\n        \"\\xD3\": 'O',\n        \"\\xD4\": 'O',\n        \"\\u1ED2\": 'O',\n        \"\\u1ED0\": 'O',\n        \"\\u1ED6\": 'O',\n        \"\\u1ED4\": 'O',\n        \"\\xD5\": '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        \"\\xD6\": '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        \"\\xD8\": 'O',\n        \"\\u01FE\": 'O',\n        \"\\u0186\": 'O',\n        \"\\u019F\": 'O',\n        \"\\uA74A\": 'O',\n        \"\\uA74C\": 'O',\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        \"\\xD9\": 'U',\n        \"\\xDA\": 'U',\n        \"\\xDB\": 'U',\n        \"\\u0168\": 'U',\n        \"\\u1E78\": 'U',\n        \"\\u016A\": 'U',\n        \"\\u1E7A\": 'U',\n        \"\\u016C\": 'U',\n        \"\\xDC\": '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        \"\\xDD\": '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        \"\\xE0\": 'a',\n        \"\\xE1\": 'a',\n        \"\\xE2\": 'a',\n        \"\\u1EA7\": 'a',\n        \"\\u1EA5\": 'a',\n        \"\\u1EAB\": 'a',\n        \"\\u1EA9\": 'a',\n        \"\\xE3\": '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        \"\\xE4\": 'a',\n        \"\\u01DF\": 'a',\n        \"\\u1EA3\": 'a',\n        \"\\xE5\": '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        \"\\xE6\": '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        \"\\xE7\": '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        \"\\xE8\": 'e',\n        \"\\xE9\": 'e',\n        \"\\xEA\": '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        \"\\xEB\": '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        \"\\xEC\": 'i',\n        \"\\xED\": 'i',\n        \"\\xEE\": 'i',\n        \"\\u0129\": 'i',\n        \"\\u012B\": 'i',\n        \"\\u012D\": 'i',\n        \"\\xEF\": '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        \"\\xF1\": '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        \"\\xF2\": 'o',\n        \"\\xF3\": 'o',\n        \"\\xF4\": 'o',\n        \"\\u1ED3\": 'o',\n        \"\\u1ED1\": 'o',\n        \"\\u1ED7\": 'o',\n        \"\\u1ED5\": 'o',\n        \"\\xF5\": '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        \"\\xF6\": '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        \"\\xF8\": 'o',\n        \"\\u01FF\": 'o',\n        \"\\u0254\": 'o',\n        \"\\uA74B\": 'o',\n        \"\\uA74D\": 'o',\n        \"\\u0275\": 'o',\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        \"\\xDF\": '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        \"\\xF9\": 'u',\n        \"\\xFA\": 'u',\n        \"\\xFB\": 'u',\n        \"\\u0169\": 'u',\n        \"\\u1E79\": 'u',\n        \"\\u016B\": 'u',\n        \"\\u1E7B\": 'u',\n        \"\\u016D\": 'u',\n        \"\\xFC\": '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        \"\\xFD\": 'y',\n        \"\\u0177\": 'y',\n        \"\\u1EF9\": 'y',\n        \"\\u0233\": 'y',\n        \"\\u1E8F\": 'y',\n        \"\\xFF\": '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        \"\\u03C9\": \"\\u03C9\",\n        \"\\u03C2\": \"\\u03C3\"\n      };\n      return diacritics;\n    });\n    S2.define('select2/data/base', ['../utils'], function (Utils) {\n      function BaseAdapter($element, options) {\n        BaseAdapter.__super__.constructor.call(this);\n      }\n      Utils.Extend(BaseAdapter, Utils.Observable);\n      BaseAdapter.prototype.current = function (callback) {\n        throw new Error('The `current` method must be defined in child classes.');\n      };\n      BaseAdapter.prototype.query = function (params, callback) {\n        throw new Error('The `query` method must be defined in child classes.');\n      };\n      BaseAdapter.prototype.bind = function (container, $container) {\n        // Can be implemented in subclasses\n      };\n      BaseAdapter.prototype.destroy = function () {\n        // Can be implemented in subclasses\n      };\n      BaseAdapter.prototype.generateResultId = function (container, data) {\n        var id = container.id + '-result-';\n        id += Utils.generateChars(4);\n        if (data.id != null) {\n          id += '-' + data.id.toString();\n        } else {\n          id += '-' + Utils.generateChars(4);\n        }\n        return id;\n      };\n      return BaseAdapter;\n    });\n    S2.define('select2/data/select', ['./base', '../utils', 'jquery'], function (BaseAdapter, Utils, $) {\n      function SelectAdapter($element, options) {\n        this.$element = $element;\n        this.options = options;\n        SelectAdapter.__super__.constructor.call(this);\n      }\n      Utils.Extend(SelectAdapter, BaseAdapter);\n      SelectAdapter.prototype.current = function (callback) {\n        var data = [];\n        var self = this;\n        this.$element.find(':selected').each(function () {\n          var $option = $(this);\n          var option = self.item($option);\n          data.push(option);\n        });\n        callback(data);\n      };\n      SelectAdapter.prototype.select = function (data) {\n        var self = this;\n        data.selected = true;\n\n        // If data.element is a DOM node, use it instead\n        if ($(data.element).is('option')) {\n          data.element.selected = true;\n          this.$element.trigger('change');\n          return;\n        }\n        if (this.$element.prop('multiple')) {\n          this.current(function (currentData) {\n            var val = [];\n            data = [data];\n            data.push.apply(data, currentData);\n            for (var d = 0; d < data.length; d++) {\n              var id = data[d].id;\n              if ($.inArray(id, val) === -1) {\n                val.push(id);\n              }\n            }\n            self.$element.val(val);\n            self.$element.trigger('change');\n          });\n        } else {\n          var val = data.id;\n          this.$element.val(val);\n          this.$element.trigger('change');\n        }\n      };\n      SelectAdapter.prototype.unselect = function (data) {\n        var self = this;\n        if (!this.$element.prop('multiple')) {\n          return;\n        }\n        data.selected = false;\n        if ($(data.element).is('option')) {\n          data.element.selected = false;\n          this.$element.trigger('change');\n          return;\n        }\n        this.current(function (currentData) {\n          var val = [];\n          for (var d = 0; d < currentData.length; d++) {\n            var id = currentData[d].id;\n            if (id !== data.id && $.inArray(id, val) === -1) {\n              val.push(id);\n            }\n          }\n          self.$element.val(val);\n          self.$element.trigger('change');\n        });\n      };\n      SelectAdapter.prototype.bind = function (container, $container) {\n        var self = this;\n        this.container = container;\n        container.on('select', function (params) {\n          self.select(params.data);\n        });\n        container.on('unselect', function (params) {\n          self.unselect(params.data);\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          $.removeData(this, 'data');\n        });\n      };\n      SelectAdapter.prototype.query = function (params, callback) {\n        var data = [];\n        var self = this;\n        var $options = this.$element.children();\n        $options.each(function () {\n          var $option = $(this);\n          if (!$option.is('option') && !$option.is('optgroup')) {\n            return;\n          }\n          var option = self.item($option);\n          var matches = self.matches(params, option);\n          if (matches !== null) {\n            data.push(matches);\n          }\n        });\n        callback({\n          results: data\n        });\n      };\n      SelectAdapter.prototype.addOptions = function ($options) {\n        Utils.appendMany(this.$element, $options);\n      };\n      SelectAdapter.prototype.option = function (data) {\n        var option;\n        if (data.children) {\n          option = document.createElement('optgroup');\n          option.label = data.text;\n        } else {\n          option = document.createElement('option');\n          if (option.textContent !== undefined) {\n            option.textContent = data.text;\n          } else {\n            option.innerText = data.text;\n          }\n        }\n        if (data.id !== undefined) {\n          option.value = data.id;\n        }\n        if (data.disabled) {\n          option.disabled = true;\n        }\n        if (data.selected) {\n          option.selected = true;\n        }\n        if (data.title) {\n          option.title = data.title;\n        }\n        var $option = $(option);\n        var normalizedData = this._normalizeItem(data);\n        normalizedData.element = option;\n\n        // Override the option's data with the combined data\n        $.data(option, 'data', normalizedData);\n        return $option;\n      };\n      SelectAdapter.prototype.item = function ($option) {\n        var data = {};\n        data = $.data($option[0], 'data');\n        if (data != null) {\n          return data;\n        }\n        if ($option.is('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.is('optgroup')) {\n          data = {\n            text: $option.prop('label'),\n            children: [],\n            title: $option.prop('title')\n          };\n          var $children = $option.children('option');\n          var children = [];\n          for (var c = 0; c < $children.length; c++) {\n            var $child = $($children[c]);\n            var child = this.item($child);\n            children.push(child);\n          }\n          data.children = children;\n        }\n        data = this._normalizeItem(data);\n        data.element = $option[0];\n        $.data($option[0], 'data', data);\n        return data;\n      };\n      SelectAdapter.prototype._normalizeItem = function (item) {\n        if (!$.isPlainObject(item)) {\n          item = {\n            id: item,\n            text: item\n          };\n        }\n        item = $.extend({}, {\n          text: ''\n        }, item);\n        var defaults = {\n          selected: false,\n          disabled: false\n        };\n        if (item.id != null) {\n          item.id = item.id.toString();\n        }\n        if (item.text != null) {\n          item.text = item.text.toString();\n        }\n        if (item._resultId == null && item.id && this.container != null) {\n          item._resultId = this.generateResultId(this.container, item);\n        }\n        return $.extend({}, defaults, item);\n      };\n      SelectAdapter.prototype.matches = function (params, data) {\n        var matcher = this.options.get('matcher');\n        return matcher(params, data);\n      };\n      return SelectAdapter;\n    });\n    S2.define('select2/data/array', ['./select', '../utils', 'jquery'], function (SelectAdapter, Utils, $) {\n      function ArrayAdapter($element, options) {\n        var data = options.get('data') || [];\n        ArrayAdapter.__super__.constructor.call(this, $element, options);\n        this.addOptions(this.convertToOptions(data));\n      }\n      Utils.Extend(ArrayAdapter, SelectAdapter);\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        if ($option.length === 0) {\n          $option = this.option(data);\n          this.addOptions($option);\n        }\n        ArrayAdapter.__super__.select.call(this, data);\n      };\n      ArrayAdapter.prototype.convertToOptions = function (data) {\n        var self = this;\n        var $existing = this.$element.find('option');\n        var existingIds = $existing.map(function () {\n          return self.item($(this)).id;\n        }).get();\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        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 ($.inArray(item.id, existingIds) >= 0) {\n            var $existingOption = $existing.filter(onlyItem(item));\n            var existingData = this.item($existingOption);\n            var newData = $.extend(true, {}, item, existingData);\n            var $newOption = this.option(newData);\n            $existingOption.replaceWith($newOption);\n            continue;\n          }\n          var $option = this.option(item);\n          if (item.children) {\n            var $children = this.convertToOptions(item.children);\n            Utils.appendMany($option, $children);\n          }\n          $options.push($option);\n        }\n        return $options;\n      };\n      return ArrayAdapter;\n    });\n    S2.define('select2/data/ajax', ['./array', '../utils', 'jquery'], function (ArrayAdapter, Utils, $) {\n      function AjaxAdapter($element, options) {\n        this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n        if (this.ajaxOptions.processResults != null) {\n          this.processResults = this.ajaxOptions.processResults;\n        }\n        AjaxAdapter.__super__.constructor.call(this, $element, options);\n      }\n      Utils.Extend(AjaxAdapter, ArrayAdapter);\n      AjaxAdapter.prototype._applyDefaults = function (options) {\n        var defaults = {\n          data: function data(params) {\n            return $.extend({}, params, {\n              q: params.term\n            });\n          },\n          transport: function transport(params, success, failure) {\n            var $request = $.ajax(params);\n            $request.then(success);\n            $request.fail(failure);\n            return $request;\n          }\n        };\n        return $.extend({}, defaults, options, true);\n      };\n      AjaxAdapter.prototype.processResults = function (results) {\n        return results;\n      };\n      AjaxAdapter.prototype.query = function (params, callback) {\n        var matches = [];\n        var self = this;\n        if (this._request != null) {\n          // JSONP requests cannot always be aborted\n          if ($.isFunction(this._request.abort)) {\n            this._request.abort();\n          }\n          this._request = null;\n        }\n        var options = $.extend({\n          type: 'GET'\n        }, this.ajaxOptions);\n        if (typeof options.url === 'function') {\n          options.url = options.url.call(this.$element, params);\n        }\n        if (typeof options.data === 'function') {\n          options.data = options.data.call(this.$element, params);\n        }\n        function request() {\n          var $request = options.transport(options, function (data) {\n            var results = self.processResults(data, params);\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 || !$.isArray(results.results)) {\n                console.error('Select2: The AJAX results did not return an array in the ' + '`results` key of the response.');\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 ($request.status && $request.status === '0') {\n              return;\n            }\n            self.trigger('results:message', {\n              message: 'errorLoading'\n            });\n          });\n          self._request = $request;\n        }\n        if (this.ajaxOptions.delay && params.term != null) {\n          if (this._queryTimeout) {\n            window.clearTimeout(this._queryTimeout);\n          }\n          this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n        } else {\n          request();\n        }\n      };\n      return AjaxAdapter;\n    });\n    S2.define('select2/data/tags', ['jquery'], function ($) {\n      function Tags(decorated, $element, options) {\n        var tags = options.get('tags');\n        var createTag = options.get('createTag');\n        if (createTag !== undefined) {\n          this.createTag = createTag;\n        }\n        var insertTag = options.get('insertTag');\n        if (insertTag !== undefined) {\n          this.insertTag = insertTag;\n        }\n        decorated.call(this, $element, options);\n        if ($.isArray(tags)) {\n          for (var t = 0; t < tags.length; t++) {\n            var tag = tags[t];\n            var item = this._normalizeItem(tag);\n            var $option = this.option(item);\n            this.$element.append($option);\n          }\n        }\n      }\n      Tags.prototype.query = function (decorated, params, callback) {\n        var self = this;\n        this._removeOldTags();\n        if (params.term == null || params.page != null) {\n          decorated.call(this, params, callback);\n          return;\n        }\n        function wrapper(obj, child) {\n          var data = obj.results;\n          for (var i = 0; i < data.length; i++) {\n            var option = data[i];\n            var checkChildren = option.children != null && !wrapper({\n              results: option.children\n            }, true);\n            var optionText = (option.text || '').toUpperCase();\n            var paramsTerm = (params.term || '').toUpperCase();\n            var checkText = optionText === paramsTerm;\n            if (checkText || checkChildren) {\n              if (child) {\n                return false;\n              }\n              obj.data = data;\n              callback(obj);\n              return;\n            }\n          }\n          if (child) {\n            return true;\n          }\n          var tag = self.createTag(params);\n          if (tag != null) {\n            var $option = self.option(tag);\n            $option.attr('data-select2-tag', true);\n            self.addOptions([$option]);\n            self.insertTag(data, tag);\n          }\n          obj.results = data;\n          callback(obj);\n        }\n        decorated.call(this, params, wrapper);\n      };\n      Tags.prototype.createTag = function (decorated, params) {\n        var term = $.trim(params.term);\n        if (term === '') {\n          return null;\n        }\n        return {\n          id: term,\n          text: term\n        };\n      };\n      Tags.prototype.insertTag = function (_, data, tag) {\n        data.unshift(tag);\n      };\n      Tags.prototype._removeOldTags = function (_) {\n        var tag = this._lastTag;\n        var $options = this.$element.find('option[data-select2-tag]');\n        $options.each(function () {\n          if (this.selected) {\n            return;\n          }\n          $(this).remove();\n        });\n      };\n      return Tags;\n    });\n    S2.define('select2/data/tokenizer', ['jquery'], function ($) {\n      function Tokenizer(decorated, $element, options) {\n        var tokenizer = options.get('tokenizer');\n        if (tokenizer !== undefined) {\n          this.tokenizer = tokenizer;\n        }\n        decorated.call(this, $element, options);\n      }\n      Tokenizer.prototype.bind = function (decorated, container, $container) {\n        decorated.call(this, container, $container);\n        this.$search = container.dropdown.$search || container.selection.$search || $container.find('.select2-search__field');\n      };\n      Tokenizer.prototype.query = function (decorated, params, callback) {\n        var self = this;\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            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        function select(data) {\n          self.trigger('select', {\n            data: data\n          });\n        }\n        params.term = params.term || '';\n        var tokenData = this.tokenizer(params, this.options, createAndSelect);\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.focus();\n          }\n          params.term = tokenData.term;\n        }\n        decorated.call(this, params, callback);\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        var createTag = this.createTag || function (params) {\n          return {\n            id: params.term,\n            text: params.term\n          };\n        };\n        while (i < term.length) {\n          var termChar = term[i];\n          if ($.inArray(termChar, separators) === -1) {\n            i++;\n            continue;\n          }\n          var part = term.substr(0, i);\n          var partParams = $.extend({}, params, {\n            term: part\n          });\n          var data = createTag(partParams);\n          if (data == null) {\n            i++;\n            continue;\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        return {\n          term: term\n        };\n      };\n      return Tokenizer;\n    });\n    S2.define('select2/data/minimumInputLength', [], function () {\n      function MinimumInputLength(decorated, $e, options) {\n        this.minimumInputLength = options.get('minimumInputLength');\n        decorated.call(this, $e, options);\n      }\n      MinimumInputLength.prototype.query = function (decorated, params, callback) {\n        params.term = params.term || '';\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          return;\n        }\n        decorated.call(this, params, callback);\n      };\n      return MinimumInputLength;\n    });\n    S2.define('select2/data/maximumInputLength', [], function () {\n      function MaximumInputLength(decorated, $e, options) {\n        this.maximumInputLength = options.get('maximumInputLength');\n        decorated.call(this, $e, options);\n      }\n      MaximumInputLength.prototype.query = function (decorated, params, callback) {\n        params.term = params.term || '';\n        if (this.maximumInputLength > 0 && 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          return;\n        }\n        decorated.call(this, params, callback);\n      };\n      return MaximumInputLength;\n    });\n    S2.define('select2/data/maximumSelectionLength', [], function () {\n      function MaximumSelectionLength(decorated, $e, options) {\n        this.maximumSelectionLength = options.get('maximumSelectionLength');\n        decorated.call(this, $e, options);\n      }\n      MaximumSelectionLength.prototype.query = function (decorated, params, callback) {\n        var self = this;\n        this.current(function (currentData) {\n          var count = currentData != null ? currentData.length : 0;\n          if (self.maximumSelectionLength > 0 && count >= self.maximumSelectionLength) {\n            self.trigger('results:message', {\n              message: 'maximumSelected',\n              args: {\n                maximum: self.maximumSelectionLength\n              }\n            });\n            return;\n          }\n          decorated.call(self, params, callback);\n        });\n      };\n      return MaximumSelectionLength;\n    });\n    S2.define('select2/dropdown', ['jquery', './utils'], function ($, Utils) {\n      function Dropdown($element, options) {\n        this.$element = $element;\n        this.options = options;\n        Dropdown.__super__.constructor.call(this);\n      }\n      Utils.Extend(Dropdown, Utils.Observable);\n      Dropdown.prototype.render = function () {\n        var $dropdown = $('<span class=\"select2-dropdown\">' + '<span class=\"select2-results\"></span>' + '</span>');\n        $dropdown.attr('dir', this.options.get('dir'));\n        this.$dropdown = $dropdown;\n        return $dropdown;\n      };\n      Dropdown.prototype.bind = function () {\n        // Should be implemented in subclasses\n      };\n      Dropdown.prototype.position = function ($dropdown, $container) {\n        // Should be implmented in subclasses\n      };\n      Dropdown.prototype.destroy = function () {\n        // Remove the dropdown from the DOM\n        this.$dropdown.remove();\n      };\n      return Dropdown;\n    });\n    S2.define('select2/dropdown/search', ['jquery', '../utils'], function ($, Utils) {\n      function Search() {}\n      Search.prototype.render = function (decorated) {\n        var $rendered = decorated.call(this);\n        var $search = $('<span class=\"select2-search select2-search--dropdown\">' + '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' + ' autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"none\"' + ' spellcheck=\"false\" role=\"textbox\" />' + '</span>');\n        this.$searchContainer = $search;\n        this.$search = $search.find('input');\n        $rendered.prepend($search);\n        return $rendered;\n      };\n      Search.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        decorated.call(this, container, $container);\n        this.$search.on('keydown', function (evt) {\n          self.trigger('keypress', evt);\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        this.$search.on('keyup input', function (evt) {\n          self.handleSearch(evt);\n        });\n        container.on('open', function () {\n          self.$search.attr('tabindex', 0);\n          self.$search.focus();\n          window.setTimeout(function () {\n            self.$search.focus();\n          }, 0);\n        });\n        container.on('close', function () {\n          self.$search.attr('tabindex', -1);\n          self.$search.val('');\n        });\n        container.on('focus', function () {\n          if (!container.isOpen()) {\n            self.$search.focus();\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            if (showSearch) {\n              self.$searchContainer.removeClass('select2-search--hide');\n            } else {\n              self.$searchContainer.addClass('select2-search--hide');\n            }\n          }\n        });\n      };\n      Search.prototype.handleSearch = function (evt) {\n        if (!this._keyUpPrevented) {\n          var input = this.$search.val();\n          this.trigger('query', {\n            term: input\n          });\n        }\n        this._keyUpPrevented = false;\n      };\n      Search.prototype.showSearch = function (_, params) {\n        return true;\n      };\n      return Search;\n    });\n    S2.define('select2/dropdown/hidePlaceholder', [], function () {\n      function HidePlaceholder(decorated, $element, options, dataAdapter) {\n        this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n        decorated.call(this, $element, options, dataAdapter);\n      }\n      HidePlaceholder.prototype.append = function (decorated, data) {\n        data.results = this.removePlaceholder(data.results);\n        decorated.call(this, data);\n      };\n      HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n        if (typeof placeholder === 'string') {\n          placeholder = {\n            id: '',\n            text: placeholder\n          };\n        }\n        return placeholder;\n      };\n      HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n        var modifiedData = data.slice(0);\n        for (var d = data.length - 1; d >= 0; d--) {\n          var item = data[d];\n          if (this.placeholder.id === item.id) {\n            modifiedData.splice(d, 1);\n          }\n        }\n        return modifiedData;\n      };\n      return HidePlaceholder;\n    });\n    S2.define('select2/dropdown/infiniteScroll', ['jquery'], function ($) {\n      function InfiniteScroll(decorated, $element, options, dataAdapter) {\n        this.lastParams = {};\n        decorated.call(this, $element, options, dataAdapter);\n        this.$loadingMore = this.createLoadingMore();\n        this.loading = false;\n      }\n      InfiniteScroll.prototype.append = function (decorated, data) {\n        this.$loadingMore.remove();\n        this.loading = false;\n        decorated.call(this, data);\n        if (this.showLoadingMore(data)) {\n          this.$results.append(this.$loadingMore);\n        }\n      };\n      InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        decorated.call(this, container, $container);\n        container.on('query', function (params) {\n          self.lastParams = params;\n          self.loading = true;\n        });\n        container.on('query:append', function (params) {\n          self.lastParams = params;\n          self.loading = true;\n        });\n        this.$results.on('scroll', function () {\n          var isLoadMoreVisible = $.contains(document.documentElement, self.$loadingMore[0]);\n          if (self.loading || !isLoadMoreVisible) {\n            return;\n          }\n          var currentOffset = self.$results.offset().top + self.$results.outerHeight(false);\n          var loadingMoreOffset = self.$loadingMore.offset().top + self.$loadingMore.outerHeight(false);\n          if (currentOffset + 50 >= loadingMoreOffset) {\n            self.loadMore();\n          }\n        });\n      };\n      InfiniteScroll.prototype.loadMore = function () {\n        this.loading = true;\n        var params = $.extend({}, {\n          page: 1\n        }, this.lastParams);\n        params.page++;\n        this.trigger('query:append', params);\n      };\n      InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n        return data.pagination && data.pagination.more;\n      };\n      InfiniteScroll.prototype.createLoadingMore = function () {\n        var $option = $('<li ' + 'class=\"select2-results__option select2-results__option--load-more\"' + 'role=\"treeitem\" aria-disabled=\"true\"></li>');\n        var message = this.options.get('translations').get('loadingMore');\n        $option.html(message(this.lastParams));\n        return $option;\n      };\n      return InfiniteScroll;\n    });\n    S2.define('select2/dropdown/attachBody', ['jquery', '../utils'], function ($, Utils) {\n      function AttachBody(decorated, $element, options) {\n        this.$dropdownParent = options.get('dropdownParent') || $(document.body);\n        decorated.call(this, $element, options);\n      }\n      AttachBody.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        var setupResultsEvents = false;\n        decorated.call(this, container, $container);\n        container.on('open', function () {\n          self._showDropdown();\n          self._attachPositioningHandler(container);\n          if (!setupResultsEvents) {\n            setupResultsEvents = true;\n            container.on('results:all', function () {\n              self._positionDropdown();\n              self._resizeDropdown();\n            });\n            container.on('results:append', function () {\n              self._positionDropdown();\n              self._resizeDropdown();\n            });\n          }\n        });\n        container.on('close', function () {\n          self._hideDropdown();\n          self._detachPositioningHandler(container);\n        });\n        this.$dropdownContainer.on('mousedown', function (evt) {\n          evt.stopPropagation();\n        });\n      };\n      AttachBody.prototype.destroy = function (decorated) {\n        decorated.call(this);\n        this.$dropdownContainer.remove();\n      };\n      AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n        // Clone all of the container classes\n        $dropdown.attr('class', $container.attr('class'));\n        $dropdown.removeClass('select2');\n        $dropdown.addClass('select2-container--open');\n        $dropdown.css({\n          position: 'absolute',\n          top: -999999\n        });\n        this.$container = $container;\n      };\n      AttachBody.prototype.render = function (decorated) {\n        var $container = $('<span></span>');\n        var $dropdown = decorated.call(this);\n        $container.append($dropdown);\n        this.$dropdownContainer = $container;\n        return $container;\n      };\n      AttachBody.prototype._hideDropdown = function (decorated) {\n        this.$dropdownContainer.detach();\n      };\n      AttachBody.prototype._attachPositioningHandler = function (decorated, container) {\n        var self = this;\n        var scrollEvent = 'scroll.select2.' + container.id;\n        var resizeEvent = 'resize.select2.' + container.id;\n        var orientationEvent = 'orientationchange.select2.' + container.id;\n        var $watchers = this.$container.parents().filter(Utils.hasScroll);\n        $watchers.each(function () {\n          $(this).data('select2-scroll-position', {\n            x: $(this).scrollLeft(),\n            y: $(this).scrollTop()\n          });\n        });\n        $watchers.on(scrollEvent, function (ev) {\n          var position = $(this).data('select2-scroll-position');\n          $(this).scrollTop(position.y);\n        });\n        $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, function (e) {\n          self._positionDropdown();\n          self._resizeDropdown();\n        });\n      };\n      AttachBody.prototype._detachPositioningHandler = 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        var $watchers = this.$container.parents().filter(Utils.hasScroll);\n        $watchers.off(scrollEvent);\n        $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n      };\n      AttachBody.prototype._positionDropdown = function () {\n        var $window = $(window);\n        var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\n        var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\n        var newDirection = null;\n        var offset = this.$container.offset();\n        offset.bottom = offset.top + this.$container.outerHeight(false);\n        var container = {\n          height: this.$container.outerHeight(false)\n        };\n        container.top = offset.top;\n        container.bottom = offset.top + container.height;\n        var dropdown = {\n          height: this.$dropdown.outerHeight(false)\n        };\n        var viewport = {\n          top: $window.scrollTop(),\n          bottom: $window.scrollTop() + $window.height()\n        };\n        var enoughRoomAbove = viewport.top < offset.top - dropdown.height;\n        var enoughRoomBelow = viewport.bottom > offset.bottom + dropdown.height;\n        var css = {\n          left: offset.left,\n          top: container.bottom\n        };\n\n        // Determine what the parent element is to use for calciulating the offset\n        var $offsetParent = this.$dropdownParent;\n\n        // For statically positoned 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        var parentOffset = $offsetParent.offset();\n        css.top -= parentOffset.top;\n        css.left -= parentOffset.left;\n        if (!isCurrentlyAbove && !isCurrentlyBelow) {\n          newDirection = 'below';\n        }\n        if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n          newDirection = 'above';\n        } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n          newDirection = 'below';\n        }\n        if (newDirection == 'above' || isCurrentlyAbove && newDirection !== 'below') {\n          css.top = container.top - parentOffset.top - dropdown.height;\n        }\n        if (newDirection != null) {\n          this.$dropdown.removeClass('select2-dropdown--below select2-dropdown--above').addClass('select2-dropdown--' + newDirection);\n          this.$container.removeClass('select2-container--below select2-container--above').addClass('select2-container--' + newDirection);\n        }\n        this.$dropdownContainer.css(css);\n      };\n      AttachBody.prototype._resizeDropdown = function () {\n        var css = {\n          width: this.$container.outerWidth(false) + 'px'\n        };\n        if (this.options.get('dropdownAutoWidth')) {\n          css.minWidth = css.width;\n          css.position = 'relative';\n          css.width = 'auto';\n        }\n        this.$dropdown.css(css);\n      };\n      AttachBody.prototype._showDropdown = function (decorated) {\n        this.$dropdownContainer.appendTo(this.$dropdownParent);\n        this._positionDropdown();\n        this._resizeDropdown();\n      };\n      return AttachBody;\n    });\n    S2.define('select2/dropdown/minimumResultsForSearch', [], function () {\n      function countResults(data) {\n        var count = 0;\n        for (var d = 0; d < data.length; d++) {\n          var item = data[d];\n          if (item.children) {\n            count += countResults(item.children);\n          } else {\n            count++;\n          }\n        }\n        return count;\n      }\n      function MinimumResultsForSearch(decorated, $element, options, dataAdapter) {\n        this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n        if (this.minimumResultsForSearch < 0) {\n          this.minimumResultsForSearch = Infinity;\n        }\n        decorated.call(this, $element, options, dataAdapter);\n      }\n      MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n        if (countResults(params.data.results) < this.minimumResultsForSearch) {\n          return false;\n        }\n        return decorated.call(this, params);\n      };\n      return MinimumResultsForSearch;\n    });\n    S2.define('select2/dropdown/selectOnClose', [], function () {\n      function SelectOnClose() {}\n      SelectOnClose.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        decorated.call(this, container, $container);\n        container.on('close', function (params) {\n          self._handleSelectOnClose(params);\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        var $highlightedResults = this.getHighlightedResults();\n\n        // Only select highlighted results\n        if ($highlightedResults.length < 1) {\n          return;\n        }\n        var data = $highlightedResults.data('data');\n\n        // Don't re-select already selected resulte\n        if (data.element != null && data.element.selected || data.element == null && data.selected) {\n          return;\n        }\n        this.trigger('select', {\n          data: data\n        });\n      };\n      return SelectOnClose;\n    });\n    S2.define('select2/dropdown/closeOnSelect', [], function () {\n      function CloseOnSelect() {}\n      CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        decorated.call(this, container, $container);\n        container.on('select', function (evt) {\n          self._selectTriggered(evt);\n        });\n        container.on('unselect', function (evt) {\n          self._selectTriggered(evt);\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) {\n          return;\n        }\n        this.trigger('close', {\n          originalEvent: originalEvent,\n          originalSelect2Event: evt\n        });\n      };\n      return CloseOnSelect;\n    });\n    S2.define('select2/i18n/en', [], function () {\n      // English\n      return {\n        errorLoading: function errorLoading() {\n          return 'The results could not be loaded.';\n        },\n        inputTooLong: function inputTooLong(args) {\n          var overChars = args.input.length - args.maximum;\n          var message = 'Please delete ' + overChars + ' character';\n          if (overChars != 1) {\n            message += 's';\n          }\n          return message;\n        },\n        inputTooShort: function inputTooShort(args) {\n          var remainingChars = args.minimum - args.input.length;\n          var message = 'Please enter ' + remainingChars + ' or more characters';\n          return message;\n        },\n        loadingMore: function loadingMore() {\n          return 'Loading more results…';\n        },\n        maximumSelected: function maximumSelected(args) {\n          var message = 'You can only select ' + args.maximum + ' item';\n          if (args.maximum != 1) {\n            message += 's';\n          }\n          return message;\n        },\n        noResults: function noResults() {\n          return 'No results found';\n        },\n        searching: function searching() {\n          return 'Searching…';\n        }\n      };\n    });\n    S2.define('select2/defaults', ['jquery', 'require', './results', './selection/single', './selection/multiple', './selection/placeholder', './selection/allowClear', './selection/search', './selection/eventRelay', './utils', './translation', './diacritics', './data/select', './data/array', './data/ajax', './data/tags', './data/tokenizer', './data/minimumInputLength', './data/maximumInputLength', './data/maximumSelectionLength', './dropdown', './dropdown/search', './dropdown/hidePlaceholder', './dropdown/infiniteScroll', './dropdown/attachBody', './dropdown/minimumResultsForSearch', './dropdown/selectOnClose', './dropdown/closeOnSelect', './i18n/en'], function ($, require, ResultsList, SingleSelection, MultipleSelection, Placeholder, AllowClear, SelectionSearch, EventRelay, Utils, Translation, DIACRITICS, SelectData, ArrayData, AjaxData, Tags, Tokenizer, MinimumInputLength, MaximumInputLength, MaximumSelectionLength, Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, EnglishTranslation) {\n      function Defaults() {\n        this.reset();\n      }\n      Defaults.prototype.apply = function (options) {\n        options = $.extend(true, {}, this.defaults, options);\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          if (options.minimumInputLength > 0) {\n            options.dataAdapter = Utils.Decorate(options.dataAdapter, MinimumInputLength);\n          }\n          if (options.maximumInputLength > 0) {\n            options.dataAdapter = Utils.Decorate(options.dataAdapter, MaximumInputLength);\n          }\n          if (options.maximumSelectionLength > 0) {\n            options.dataAdapter = Utils.Decorate(options.dataAdapter, MaximumSelectionLength);\n          }\n          if (options.tags) {\n            options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n          }\n          if (options.tokenSeparators != null || options.tokenizer != null) {\n            options.dataAdapter = Utils.Decorate(options.dataAdapter, Tokenizer);\n          }\n          if (options.query != null) {\n            var Query = require(options.amdBase + 'compat/query');\n            options.dataAdapter = Utils.Decorate(options.dataAdapter, Query);\n          }\n          if (options.initSelection != null) {\n            var InitSelection = require(options.amdBase + 'compat/initSelection');\n            options.dataAdapter = Utils.Decorate(options.dataAdapter, InitSelection);\n          }\n        }\n        if (options.resultsAdapter == null) {\n          options.resultsAdapter = ResultsList;\n          if (options.ajax != null) {\n            options.resultsAdapter = Utils.Decorate(options.resultsAdapter, InfiniteScroll);\n          }\n          if (options.placeholder != null) {\n            options.resultsAdapter = Utils.Decorate(options.resultsAdapter, HidePlaceholder);\n          }\n          if (options.selectOnClose) {\n            options.resultsAdapter = Utils.Decorate(options.resultsAdapter, SelectOnClose);\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            options.dropdownAdapter = SearchableDropdown;\n          }\n          if (options.minimumResultsForSearch !== 0) {\n            options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, MinimumResultsForSearch);\n          }\n          if (options.closeOnSelect) {\n            options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, CloseOnSelect);\n          }\n          if (options.dropdownCssClass != null || options.dropdownCss != null || options.adaptDropdownCssClass != null) {\n            var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\n            options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, DropdownCSS);\n          }\n          options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, AttachBody);\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(options.selectionAdapter, Placeholder);\n          }\n          if (options.allowClear) {\n            options.selectionAdapter = Utils.Decorate(options.selectionAdapter, AllowClear);\n          }\n          if (options.multiple) {\n            options.selectionAdapter = Utils.Decorate(options.selectionAdapter, SelectionSearch);\n          }\n          if (options.containerCssClass != null || options.containerCss != null || options.adaptContainerCssClass != null) {\n            var ContainerCSS = require(options.amdBase + 'compat/containerCss');\n            options.selectionAdapter = Utils.Decorate(options.selectionAdapter, ContainerCSS);\n          }\n          options.selectionAdapter = Utils.Decorate(options.selectionAdapter, EventRelay);\n        }\n        if (typeof options.language === 'string') {\n          // Check if the language is specified with a region\n          if (options.language.indexOf('-') > 0) {\n            // Extract the region information if it is included\n            var languageParts = options.language.split('-');\n            var baseLanguage = languageParts[0];\n            options.language = [options.language, baseLanguage];\n          } else {\n            options.language = [options.language];\n          }\n        }\n        if ($.isArray(options.language)) {\n          var languages = new Translation();\n          options.language.push('en');\n          var languageNames = options.language;\n          for (var l = 0; l < languageNames.length; l++) {\n            var name = languageNames[l];\n            var language = {};\n            try {\n              // Try to load it with the original name\n              language = Translation.loadPath(name);\n            } catch (e) {\n              try {\n                // If we couldn't load it, check if it wasn't the full path\n                name = this.defaults.amdLanguageBase + name;\n                language = Translation.loadPath(name);\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 (options.debug && window.console && console.warn) {\n                  console.warn('Select2: The language file for \"' + name + '\" could not be ' + 'automatically loaded. A fallback will be used instead.');\n                }\n                continue;\n              }\n            }\n            languages.extend(language);\n          }\n          options.translations = languages;\n        } else {\n          var baseTranslation = Translation.loadPath(this.defaults.amdLanguageBase + 'en');\n          var customTranslation = new Translation(options.language);\n          customTranslation.extend(baseTranslation);\n          options.translations = customTranslation;\n        }\n        return options;\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          return text.replace(/[^\\u0000-\\u007E]/g, match);\n        }\n        function matcher(params, data) {\n          // Always return the object if there is nothing to compare\n          if ($.trim(params.term) === '') {\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              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          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        this.defaults = {\n          amdBase: './',\n          amdLanguageBase: './i18n/',\n          closeOnSelect: true,\n          debug: false,\n          dropdownAutoWidth: false,\n          escapeMarkup: Utils.escapeMarkup,\n          language: EnglishTranslation,\n          matcher: matcher,\n          minimumInputLength: 0,\n          maximumInputLength: 0,\n          maximumSelectionLength: 0,\n          minimumResultsForSearch: 0,\n          selectOnClose: false,\n          sorter: function sorter(data) {\n            return data;\n          },\n          templateResult: function templateResult(result) {\n            return result.text;\n          },\n          templateSelection: function templateSelection(selection) {\n            return selection.text;\n          },\n          theme: 'default',\n          width: 'resolve'\n        };\n      };\n      Defaults.prototype.set = function (key, value) {\n        var camelKey = $.camelCase(key);\n        var data = {};\n        data[camelKey] = value;\n        var convertedData = Utils._convertData(data);\n        $.extend(this.defaults, convertedData);\n      };\n      var defaults = new Defaults();\n      return defaults;\n    });\n    S2.define('select2/options', ['require', 'jquery', './defaults', './utils'], function (require, $, Defaults, Utils) {\n      function Options(options, $element) {\n        this.options = options;\n        if ($element != null) {\n          this.fromElement($element);\n        }\n        this.options = Defaults.apply(this.options);\n        if ($element && $element.is('input')) {\n          var InputCompat = require(this.get('amdBase') + 'compat/inputData');\n          this.options.dataAdapter = Utils.Decorate(this.options.dataAdapter, InputCompat);\n        }\n      }\n      Options.prototype.fromElement = function ($e) {\n        var excludedData = ['select2'];\n        if (this.options.multiple == null) {\n          this.options.multiple = $e.prop('multiple');\n        }\n        if (this.options.disabled == null) {\n          this.options.disabled = $e.prop('disabled');\n        }\n        if (this.options.language == null) {\n          if ($e.prop('lang')) {\n            this.options.language = $e.prop('lang').toLowerCase();\n          } else if ($e.closest('[lang]').prop('lang')) {\n            this.options.language = $e.closest('[lang]').prop('lang');\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        $e.prop('disabled', this.options.disabled);\n        $e.prop('multiple', this.options.multiple);\n        if ($e.data('select2Tags')) {\n          if (this.options.debug && window.console && console.warn) {\n            console.warn('Select2: The `data-select2-tags` attribute has been changed to ' + 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' + 'removed in future versions of Select2.');\n          }\n          $e.data('data', $e.data('select2Tags'));\n          $e.data('tags', true);\n        }\n        if ($e.data('ajaxUrl')) {\n          if (this.options.debug && window.console && console.warn) {\n            console.warn('Select2: The `data-ajax-url` attribute has been changed to ' + '`data-ajax--url` and support for the old attribute will be removed' + ' in future versions of Select2.');\n          }\n          $e.attr('ajax--url', $e.data('ajaxUrl'));\n          $e.data('ajax--url', $e.data('ajaxUrl'));\n        }\n        var dataset = {};\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, $e.data());\n        } else {\n          dataset = $e.data();\n        }\n        var data = $.extend(true, {}, dataset);\n        data = Utils._convertData(data);\n        for (var key in data) {\n          if ($.inArray(key, excludedData) > -1) {\n            continue;\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        return this;\n      };\n      Options.prototype.get = function (key) {\n        return this.options[key];\n      };\n      Options.prototype.set = function (key, val) {\n        this.options[key] = val;\n      };\n      return Options;\n    });\n    S2.define('select2/core', ['jquery', './options', './utils', './keys'], function ($, Options, Utils, KEYS) {\n      var Select2 = function Select2($element, options) {\n        if ($element.data('select2') != null) {\n          $element.data('select2').destroy();\n        }\n        this.$element = $element;\n        this.id = this._generateId($element);\n        options = options || {};\n        this.options = new Options(options, $element);\n        Select2.__super__.constructor.call(this);\n\n        // Set up the tabindex\n\n        var tabindex = $element.attr('tabindex') || 0;\n        $element.data('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        var $container = this.render();\n        this._placeContainer($container);\n        var SelectionAdapter = this.options.get('selectionAdapter');\n        this.selection = new SelectionAdapter($element, this.options);\n        this.$selection = this.selection.render();\n        this.selection.position(this.$selection, $container);\n        var DropdownAdapter = this.options.get('dropdownAdapter');\n        this.dropdown = new DropdownAdapter($element, this.options);\n        this.$dropdown = this.dropdown.render();\n        this.dropdown.position(this.$dropdown, $container);\n        var ResultsAdapter = this.options.get('resultsAdapter');\n        this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n        this.$results = this.results.render();\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.addClass('select2-hidden-accessible');\n        $element.attr('aria-hidden', 'true');\n\n        // Synchronize any monitored attributes\n        this._syncAttributes();\n        $element.data('select2', this);\n      };\n      Utils.Extend(Select2, Utils.Observable);\n      Select2.prototype._generateId = function ($element) {\n        var id = '';\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        id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n        id = 'select2-' + id;\n        return id;\n      };\n      Select2.prototype._placeContainer = function ($container) {\n        $container.insertAfter(this.$element);\n        var width = this._resolveWidth(this.$element, this.options.get('width'));\n        if (width != null) {\n          $container.css('width', width);\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        if (method == 'resolve') {\n          var styleWidth = this._resolveWidth($element, 'style');\n          if (styleWidth != null) {\n            return styleWidth;\n          }\n          return this._resolveWidth($element, 'element');\n        }\n        if (method == 'element') {\n          var elementWidth = $element.outerWidth(false);\n          if (elementWidth <= 0) {\n            return 'auto';\n          }\n          return elementWidth + 'px';\n        }\n        if (method == 'style') {\n          var style = $element.attr('style');\n          if (typeof style !== 'string') {\n            return null;\n          }\n          var attrs = style.split(';');\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            if (matches !== null && matches.length >= 1) {\n              return matches[1];\n            }\n          }\n          return null;\n        }\n        return method;\n      };\n      Select2.prototype._bindAdapters = function () {\n        this.dataAdapter.bind(this, this.$container);\n        this.selection.bind(this, this.$container);\n        this.dropdown.bind(this, this.$container);\n        this.results.bind(this, this.$container);\n      };\n      Select2.prototype._registerDomEvents = function () {\n        var self = this;\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        this.$element.on('focus.select2', function (evt) {\n          self.trigger('focus', evt);\n        });\n        this._syncA = Utils.bind(this._syncAttributes, this);\n        this._syncS = Utils.bind(this._syncSubtree, this);\n        if (this.$element[0].attachEvent) {\n          this.$element[0].attachEvent('onpropertychange', this._syncA);\n        }\n        var observer = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;\n        if (observer != null) {\n          this._observer = new observer(function (mutations) {\n            $.each(mutations, self._syncA);\n            $.each(mutations, self._syncS);\n          });\n          this._observer.observe(this.$element[0], {\n            attributes: true,\n            childList: true,\n            subtree: false\n          });\n        } else if (this.$element[0].addEventListener) {\n          this.$element[0].addEventListener('DOMAttrModified', self._syncA, false);\n          this.$element[0].addEventListener('DOMNodeInserted', self._syncS, false);\n          this.$element[0].addEventListener('DOMNodeRemoved', self._syncS, false);\n        }\n      };\n      Select2.prototype._registerDataEvents = function () {\n        var self = this;\n        this.dataAdapter.on('*', function (name, params) {\n          self.trigger(name, params);\n        });\n      };\n      Select2.prototype._registerSelectionEvents = function () {\n        var self = this;\n        var nonRelayEvents = ['toggle', 'focus'];\n        this.selection.on('toggle', function () {\n          self.toggleDropdown();\n        });\n        this.selection.on('focus', function (params) {\n          self.focus(params);\n        });\n        this.selection.on('*', function (name, params) {\n          if ($.inArray(name, nonRelayEvents) !== -1) {\n            return;\n          }\n          self.trigger(name, params);\n        });\n      };\n      Select2.prototype._registerDropdownEvents = function () {\n        var self = this;\n        this.dropdown.on('*', function (name, params) {\n          self.trigger(name, params);\n        });\n      };\n      Select2.prototype._registerResultsEvents = function () {\n        var self = this;\n        this.results.on('*', function (name, params) {\n          self.trigger(name, params);\n        });\n      };\n      Select2.prototype._registerEvents = function () {\n        var self = this;\n        this.on('open', function () {\n          self.$container.addClass('select2-container--open');\n        });\n        this.on('close', function () {\n          self.$container.removeClass('select2-container--open');\n        });\n        this.on('enable', function () {\n          self.$container.removeClass('select2-container--disabled');\n        });\n        this.on('disable', function () {\n          self.$container.addClass('select2-container--disabled');\n        });\n        this.on('blur', function () {\n          self.$container.removeClass('select2-container--focus');\n        });\n        this.on('query', function (params) {\n          if (!self.isOpen()) {\n            self.trigger('open', {});\n          }\n          this.dataAdapter.query(params, function (data) {\n            self.trigger('results:all', {\n              data: data,\n              query: params\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        this.on('keypress', function (evt) {\n          var key = evt.which;\n          if (self.isOpen()) {\n            if (key === KEYS.ESC || key === KEYS.TAB || key === KEYS.UP && evt.altKey) {\n              self.close();\n              evt.preventDefault();\n            } else if (key === KEYS.ENTER) {\n              self.trigger('results:select', {});\n              evt.preventDefault();\n            } else if (key === KEYS.SPACE && evt.ctrlKey) {\n              self.trigger('results:toggle', {});\n              evt.preventDefault();\n            } else if (key === KEYS.UP) {\n              self.trigger('results:previous', {});\n              evt.preventDefault();\n            } else if (key === KEYS.DOWN) {\n              self.trigger('results:next', {});\n              evt.preventDefault();\n            }\n          } else {\n            if (key === KEYS.ENTER || key === KEYS.SPACE || key === KEYS.DOWN && evt.altKey) {\n              self.open();\n              evt.preventDefault();\n            }\n          }\n        });\n      };\n      Select2.prototype._syncAttributes = function () {\n        this.options.set('disabled', this.$element.prop('disabled'));\n        if (this.options.get('disabled')) {\n          if (this.isOpen()) {\n            this.close();\n          }\n          this.trigger('disable', {});\n        } else {\n          this.trigger('enable', {});\n        }\n      };\n      Select2.prototype._syncSubtree = function (evt, mutations) {\n        var changed = false;\n        var self = this;\n\n        // Ignore any mutation events raised for elements that aren't options or\n        // optgroups. This handles the case when the select element is destroyed\n        if (evt && evt.target && evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP') {\n          return;\n        }\n        if (!mutations) {\n          // If mutation events aren't supported, then we can only assume that the\n          // change affected the selections\n          changed = true;\n        } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n          for (var n = 0; n < mutations.addedNodes.length; n++) {\n            var node = mutations.addedNodes[n];\n            if (node.selected) {\n              changed = true;\n            }\n          }\n        } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n          changed = true;\n        }\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        };\n        if (args === undefined) {\n          args = {};\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          actualTrigger.call(this, preTriggerName, preTriggerArgs);\n          if (preTriggerArgs.prevented) {\n            args.prevented = true;\n            return;\n          }\n        }\n        actualTrigger.call(this, name, args);\n      };\n      Select2.prototype.toggleDropdown = function () {\n        if (this.options.get('disabled')) {\n          return;\n        }\n        if (this.isOpen()) {\n          this.close();\n        } else {\n          this.open();\n        }\n      };\n      Select2.prototype.open = function () {\n        if (this.isOpen()) {\n          return;\n        }\n        this.trigger('query', {});\n      };\n      Select2.prototype.close = function () {\n        if (!this.isOpen()) {\n          return;\n        }\n        this.trigger('close', {});\n      };\n      Select2.prototype.isOpen = function () {\n        return this.$container.hasClass('select2-container--open');\n      };\n      Select2.prototype.hasFocus = function () {\n        return this.$container.hasClass('select2-container--focus');\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        this.$container.addClass('select2-container--focus');\n        this.trigger('focus', {});\n      };\n      Select2.prototype.enable = function (args) {\n        if (this.options.get('debug') && window.console && console.warn) {\n          console.warn('Select2: The `select2(\"enable\")` method has been deprecated and will' + ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' + ' instead.');\n        }\n        if (args == null || args.length === 0) {\n          args = [true];\n        }\n        var disabled = !args[0];\n        this.$element.prop('disabled', disabled);\n      };\n      Select2.prototype.data = function () {\n        if (this.options.get('debug') && arguments.length > 0 && window.console && console.warn) {\n          console.warn('Select2: Data can no longer be set using `select2(\"data\")`. You ' + 'should consider setting the value instead using `$element.val()`.');\n        }\n        var data = [];\n        this.dataAdapter.current(function (currentData) {\n          data = currentData;\n        });\n        return data;\n      };\n      Select2.prototype.val = function (args) {\n        if (this.options.get('debug') && window.console && console.warn) {\n          console.warn('Select2: The `select2(\"val\")` method has been deprecated and will be' + ' removed in later Select2 versions. Use $element.val() instead.');\n        }\n        if (args == null || args.length === 0) {\n          return this.$element.val();\n        }\n        var newVal = args[0];\n        if ($.isArray(newVal)) {\n          newVal = $.map(newVal, function (obj) {\n            return obj.toString();\n          });\n        }\n        this.$element.val(newVal).trigger('change');\n      };\n      Select2.prototype.destroy = function () {\n        this.$container.remove();\n        if (this.$element[0].detachEvent) {\n          this.$element[0].detachEvent('onpropertychange', this._syncA);\n        }\n        if (this._observer != null) {\n          this._observer.disconnect();\n          this._observer = null;\n        } else if (this.$element[0].removeEventListener) {\n          this.$element[0].removeEventListener('DOMAttrModified', this._syncA, false);\n          this.$element[0].removeEventListener('DOMNodeInserted', this._syncS, false);\n          this.$element[0].removeEventListener('DOMNodeRemoved', this._syncS, false);\n        }\n        this._syncA = null;\n        this._syncS = null;\n        this.$element.off('.select2');\n        this.$element.attr('tabindex', this.$element.data('old-tabindex'));\n        this.$element.removeClass('select2-hidden-accessible');\n        this.$element.attr('aria-hidden', 'false');\n        this.$element.removeData('select2');\n        this.dataAdapter.destroy();\n        this.selection.destroy();\n        this.dropdown.destroy();\n        this.results.destroy();\n        this.dataAdapter = null;\n        this.selection = null;\n        this.dropdown = null;\n        this.results = null;\n      };\n      Select2.prototype.render = function () {\n        var $container = $('<span class=\"select2 select2-container\">' + '<span class=\"selection\"></span>' + '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' + '</span>');\n        $container.attr('dir', this.options.get('dir'));\n        this.$container = $container;\n        this.$container.addClass('select2-container--' + this.options.get('theme'));\n        $container.data('element', this.$element);\n        return $container;\n      };\n      return Select2;\n    });\n    S2.define('jquery-mousewheel', ['jquery'], function ($) {\n      // Used to shim jQuery.mousewheel for non-full builds.\n      return $;\n    });\n    S2.define('jquery.select2', ['jquery', 'jquery-mousewheel', './select2/core', './select2/defaults'], function ($, _, Select2, Defaults) {\n      if ($.fn.select2 == null) {\n        // All methods that should return the element\n        var thisMethods = ['open', 'close', 'destroy'];\n        $.fn.select2 = function (options) {\n          options = options || {};\n          if (_typeof(options) === 'object') {\n            this.each(function () {\n              var instanceOptions = $.extend(true, {}, options);\n              var instance = new Select2($(this), instanceOptions);\n            });\n            return this;\n          } else if (typeof options === 'string') {\n            var ret;\n            var args = Array.prototype.slice.call(arguments, 1);\n            this.each(function () {\n              var instance = $(this).data('select2');\n              if (instance == null && window.console && console.error) {\n                console.error('The select2(\\'' + options + '\\') method was called on an ' + 'element that is not using Select2.');\n              }\n              ret = instance[options].apply(instance, args);\n            });\n\n            // Check if we should be returning `this`\n            if ($.inArray(options, thisMethods) > -1) {\n              return this;\n            }\n            return ret;\n          } else {\n            throw new Error('Invalid arguments for Select2: ' + options);\n          }\n        };\n      }\n      if ($.fn.select2.defaults == null) {\n        $.fn.select2.defaults = Defaults;\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});"],"sourceRoot":""}