{"version":3,"file":"js/534-b8ffbdf0180bb6bf0c1b.js","mappings":"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IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,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,OAAU,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,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,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,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,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,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,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,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,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,OAAU,KACV,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,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,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,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,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,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,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,OAAU,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,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,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,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,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,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,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,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","sources":["webpack://envida/./node_modules/flatpickr/dist/flatpickr.css","webpack://envida/./node_modules/nouislider/dist/nouislider.css","webpack://envida/./node_modules/select2/dist/css/select2.css?a721","webpack://envida/./node_modules/select2/dist/js/select2.js","webpack://envida/./node_modules/sortablejs/modular/sortable.esm.js","webpack://envida/./node_modules/nouislider/dist/nouislider.mjs"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".flatpickr-calendar {\\n background: transparent;\\n opacity: 0;\\n display: none;\\n text-align: center;\\n visibility: hidden;\\n padding: 0;\\n -webkit-animation: none;\\n animation: none;\\n direction: ltr;\\n border: 0;\\n font-size: 14px;\\n line-height: 24px;\\n border-radius: 5px;\\n position: absolute;\\n width: 307.875px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n -ms-touch-action: manipulation;\\n touch-action: manipulation;\\n background: #fff;\\n -webkit-box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08);\\n box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08);\\n}\\n.flatpickr-calendar.open,\\n.flatpickr-calendar.inline {\\n opacity: 1;\\n max-height: 640px;\\n visibility: visible;\\n}\\n.flatpickr-calendar.open {\\n display: inline-block;\\n z-index: 99999;\\n}\\n.flatpickr-calendar.animate.open {\\n -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);\\n animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);\\n}\\n.flatpickr-calendar.inline {\\n display: block;\\n position: relative;\\n top: 2px;\\n}\\n.flatpickr-calendar.static {\\n position: absolute;\\n top: calc(100% + 2px);\\n}\\n.flatpickr-calendar.static.open {\\n z-index: 999;\\n display: block;\\n}\\n.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {\\n -webkit-box-shadow: none !important;\\n box-shadow: none !important;\\n}\\n.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {\\n -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;\\n box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;\\n}\\n.flatpickr-calendar .hasWeeks .dayContainer,\\n.flatpickr-calendar .hasTime .dayContainer {\\n border-bottom: 0;\\n border-bottom-right-radius: 0;\\n border-bottom-left-radius: 0;\\n}\\n.flatpickr-calendar .hasWeeks .dayContainer {\\n border-left: 0;\\n}\\n.flatpickr-calendar.hasTime .flatpickr-time {\\n height: 40px;\\n border-top: 1px solid #e6e6e6;\\n}\\n.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {\\n height: auto;\\n}\\n.flatpickr-calendar:before,\\n.flatpickr-calendar:after {\\n position: absolute;\\n display: block;\\n pointer-events: none;\\n border: solid transparent;\\n content: '';\\n height: 0;\\n width: 0;\\n left: 22px;\\n}\\n.flatpickr-calendar.rightMost:before,\\n.flatpickr-calendar.arrowRight:before,\\n.flatpickr-calendar.rightMost:after,\\n.flatpickr-calendar.arrowRight:after {\\n left: auto;\\n right: 22px;\\n}\\n.flatpickr-calendar.arrowCenter:before,\\n.flatpickr-calendar.arrowCenter:after {\\n left: 50%;\\n right: 50%;\\n}\\n.flatpickr-calendar:before {\\n border-width: 5px;\\n margin: 0 -5px;\\n}\\n.flatpickr-calendar:after {\\n border-width: 4px;\\n margin: 0 -4px;\\n}\\n.flatpickr-calendar.arrowTop:before,\\n.flatpickr-calendar.arrowTop:after {\\n bottom: 100%;\\n}\\n.flatpickr-calendar.arrowTop:before {\\n border-bottom-color: #e6e6e6;\\n}\\n.flatpickr-calendar.arrowTop:after {\\n border-bottom-color: #fff;\\n}\\n.flatpickr-calendar.arrowBottom:before,\\n.flatpickr-calendar.arrowBottom:after {\\n top: 100%;\\n}\\n.flatpickr-calendar.arrowBottom:before {\\n border-top-color: #e6e6e6;\\n}\\n.flatpickr-calendar.arrowBottom:after {\\n border-top-color: #fff;\\n}\\n.flatpickr-calendar:focus {\\n outline: 0;\\n}\\n.flatpickr-wrapper {\\n position: relative;\\n display: inline-block;\\n}\\n.flatpickr-months {\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n}\\n.flatpickr-months .flatpickr-month {\\n background: transparent;\\n color: rgba(0,0,0,0.9);\\n fill: rgba(0,0,0,0.9);\\n height: 34px;\\n line-height: 1;\\n text-align: center;\\n position: relative;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n overflow: hidden;\\n -webkit-box-flex: 1;\\n -webkit-flex: 1;\\n -ms-flex: 1;\\n flex: 1;\\n}\\n.flatpickr-months .flatpickr-prev-month,\\n.flatpickr-months .flatpickr-next-month {\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n text-decoration: none;\\n cursor: pointer;\\n position: absolute;\\n top: 0;\\n height: 34px;\\n padding: 10px;\\n z-index: 3;\\n color: rgba(0,0,0,0.9);\\n fill: rgba(0,0,0,0.9);\\n}\\n.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,\\n.flatpickr-months .flatpickr-next-month.flatpickr-disabled {\\n display: none;\\n}\\n.flatpickr-months .flatpickr-prev-month i,\\n.flatpickr-months .flatpickr-next-month i {\\n position: relative;\\n}\\n.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,\\n.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {\\n/*\\n /*rtl:begin:ignore*/\\n/*\\n */\\n left: 0;\\n/*\\n /*rtl:end:ignore*/\\n/*\\n */\\n}\\n/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,\\n.flatpickr-months .flatpickr-next-month.flatpickr-next-month {\\n/*\\n /*rtl:begin:ignore*/\\n/*\\n */\\n right: 0;\\n/*\\n /*rtl:end:ignore*/\\n/*\\n */\\n}\\n/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month:hover,\\n.flatpickr-months .flatpickr-next-month:hover {\\n color: #959ea9;\\n}\\n.flatpickr-months .flatpickr-prev-month:hover svg,\\n.flatpickr-months .flatpickr-next-month:hover svg {\\n fill: #f64747;\\n}\\n.flatpickr-months .flatpickr-prev-month svg,\\n.flatpickr-months .flatpickr-next-month svg {\\n width: 14px;\\n height: 14px;\\n}\\n.flatpickr-months .flatpickr-prev-month svg path,\\n.flatpickr-months .flatpickr-next-month svg path {\\n -webkit-transition: fill 0.1s;\\n transition: fill 0.1s;\\n fill: inherit;\\n}\\n.numInputWrapper {\\n position: relative;\\n height: auto;\\n}\\n.numInputWrapper input,\\n.numInputWrapper span {\\n display: inline-block;\\n}\\n.numInputWrapper input {\\n width: 100%;\\n}\\n.numInputWrapper input::-ms-clear {\\n display: none;\\n}\\n.numInputWrapper input::-webkit-outer-spin-button,\\n.numInputWrapper input::-webkit-inner-spin-button {\\n margin: 0;\\n -webkit-appearance: none;\\n}\\n.numInputWrapper span {\\n position: absolute;\\n right: 0;\\n width: 14px;\\n padding: 0 4px 0 2px;\\n height: 50%;\\n line-height: 50%;\\n opacity: 0;\\n cursor: pointer;\\n border: 1px solid rgba(57,57,57,0.15);\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.numInputWrapper span:hover {\\n background: rgba(0,0,0,0.1);\\n}\\n.numInputWrapper span:active {\\n background: rgba(0,0,0,0.2);\\n}\\n.numInputWrapper span:after {\\n display: block;\\n content: \\\"\\\";\\n position: absolute;\\n}\\n.numInputWrapper span.arrowUp {\\n top: 0;\\n border-bottom: 0;\\n}\\n.numInputWrapper span.arrowUp:after {\\n border-left: 4px solid transparent;\\n border-right: 4px solid transparent;\\n border-bottom: 4px solid rgba(57,57,57,0.6);\\n top: 26%;\\n}\\n.numInputWrapper span.arrowDown {\\n top: 50%;\\n}\\n.numInputWrapper span.arrowDown:after {\\n border-left: 4px solid transparent;\\n border-right: 4px solid transparent;\\n border-top: 4px solid rgba(57,57,57,0.6);\\n top: 40%;\\n}\\n.numInputWrapper span svg {\\n width: inherit;\\n height: auto;\\n}\\n.numInputWrapper span svg path {\\n fill: rgba(0,0,0,0.5);\\n}\\n.numInputWrapper:hover {\\n background: rgba(0,0,0,0.05);\\n}\\n.numInputWrapper:hover span {\\n opacity: 1;\\n}\\n.flatpickr-current-month {\\n font-size: 135%;\\n line-height: inherit;\\n font-weight: 300;\\n color: inherit;\\n position: absolute;\\n width: 75%;\\n left: 12.5%;\\n padding: 7.48px 0 0 0;\\n line-height: 1;\\n height: 34px;\\n display: inline-block;\\n text-align: center;\\n -webkit-transform: translate3d(0px, 0px, 0px);\\n transform: translate3d(0px, 0px, 0px);\\n}\\n.flatpickr-current-month span.cur-month {\\n font-family: inherit;\\n font-weight: 700;\\n color: inherit;\\n display: inline-block;\\n margin-left: 0.5ch;\\n padding: 0;\\n}\\n.flatpickr-current-month span.cur-month:hover {\\n background: rgba(0,0,0,0.05);\\n}\\n.flatpickr-current-month .numInputWrapper {\\n width: 6ch;\\n width: 7ch\\\\0;\\n display: inline-block;\\n}\\n.flatpickr-current-month .numInputWrapper span.arrowUp:after {\\n border-bottom-color: rgba(0,0,0,0.9);\\n}\\n.flatpickr-current-month .numInputWrapper span.arrowDown:after {\\n border-top-color: rgba(0,0,0,0.9);\\n}\\n.flatpickr-current-month input.cur-year {\\n background: transparent;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: inherit;\\n cursor: text;\\n padding: 0 0 0 0.5ch;\\n margin: 0;\\n display: inline-block;\\n font-size: inherit;\\n font-family: inherit;\\n font-weight: 300;\\n line-height: inherit;\\n height: auto;\\n border: 0;\\n border-radius: 0;\\n vertical-align: initial;\\n -webkit-appearance: textfield;\\n -moz-appearance: textfield;\\n appearance: textfield;\\n}\\n.flatpickr-current-month input.cur-year:focus {\\n outline: 0;\\n}\\n.flatpickr-current-month input.cur-year[disabled],\\n.flatpickr-current-month input.cur-year[disabled]:hover {\\n font-size: 100%;\\n color: rgba(0,0,0,0.5);\\n background: transparent;\\n pointer-events: none;\\n}\\n.flatpickr-current-month .flatpickr-monthDropdown-months {\\n appearance: menulist;\\n background: transparent;\\n border: none;\\n border-radius: 0;\\n box-sizing: border-box;\\n color: inherit;\\n cursor: pointer;\\n font-size: inherit;\\n font-family: inherit;\\n font-weight: 300;\\n height: auto;\\n line-height: inherit;\\n margin: -1px 0 0 0;\\n outline: none;\\n padding: 0 0 0 0.5ch;\\n position: relative;\\n vertical-align: initial;\\n -webkit-box-sizing: border-box;\\n -webkit-appearance: menulist;\\n -moz-appearance: menulist;\\n width: auto;\\n}\\n.flatpickr-current-month .flatpickr-monthDropdown-months:focus,\\n.flatpickr-current-month .flatpickr-monthDropdown-months:active {\\n outline: none;\\n}\\n.flatpickr-current-month .flatpickr-monthDropdown-months:hover {\\n background: rgba(0,0,0,0.05);\\n}\\n.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {\\n background-color: transparent;\\n outline: none;\\n padding: 0;\\n}\\n.flatpickr-weekdays {\\n background: transparent;\\n text-align: center;\\n overflow: hidden;\\n width: 100%;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -webkit-align-items: center;\\n -ms-flex-align: center;\\n align-items: center;\\n height: 28px;\\n}\\n.flatpickr-weekdays .flatpickr-weekdaycontainer {\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-flex: 1;\\n -webkit-flex: 1;\\n -ms-flex: 1;\\n flex: 1;\\n}\\nspan.flatpickr-weekday {\\n cursor: default;\\n font-size: 90%;\\n background: transparent;\\n color: rgba(0,0,0,0.54);\\n line-height: 1;\\n margin: 0;\\n text-align: center;\\n display: block;\\n -webkit-box-flex: 1;\\n -webkit-flex: 1;\\n -ms-flex: 1;\\n flex: 1;\\n font-weight: bolder;\\n}\\n.dayContainer,\\n.flatpickr-weeks {\\n padding: 1px 0 0 0;\\n}\\n.flatpickr-days {\\n position: relative;\\n overflow: hidden;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: start;\\n -webkit-align-items: flex-start;\\n -ms-flex-align: start;\\n align-items: flex-start;\\n width: 307.875px;\\n}\\n.flatpickr-days:focus {\\n outline: 0;\\n}\\n.dayContainer {\\n padding: 0;\\n outline: 0;\\n text-align: left;\\n width: 307.875px;\\n min-width: 307.875px;\\n max-width: 307.875px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n display: inline-block;\\n display: -ms-flexbox;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: flex;\\n -webkit-flex-wrap: wrap;\\n flex-wrap: wrap;\\n -ms-flex-wrap: wrap;\\n -ms-flex-pack: justify;\\n -webkit-justify-content: space-around;\\n justify-content: space-around;\\n -webkit-transform: translate3d(0px, 0px, 0px);\\n transform: translate3d(0px, 0px, 0px);\\n opacity: 1;\\n}\\n.dayContainer + .dayContainer {\\n -webkit-box-shadow: -1px 0 0 #e6e6e6;\\n box-shadow: -1px 0 0 #e6e6e6;\\n}\\n.flatpickr-day {\\n background: none;\\n border: 1px solid transparent;\\n border-radius: 150px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #393939;\\n cursor: pointer;\\n font-weight: 400;\\n width: 14.2857143%;\\n -webkit-flex-basis: 14.2857143%;\\n -ms-flex-preferred-size: 14.2857143%;\\n flex-basis: 14.2857143%;\\n max-width: 39px;\\n height: 39px;\\n line-height: 39px;\\n margin: 0;\\n display: inline-block;\\n position: relative;\\n -webkit-box-pack: center;\\n -webkit-justify-content: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n text-align: center;\\n}\\n.flatpickr-day.inRange,\\n.flatpickr-day.prevMonthDay.inRange,\\n.flatpickr-day.nextMonthDay.inRange,\\n.flatpickr-day.today.inRange,\\n.flatpickr-day.prevMonthDay.today.inRange,\\n.flatpickr-day.nextMonthDay.today.inRange,\\n.flatpickr-day:hover,\\n.flatpickr-day.prevMonthDay:hover,\\n.flatpickr-day.nextMonthDay:hover,\\n.flatpickr-day:focus,\\n.flatpickr-day.prevMonthDay:focus,\\n.flatpickr-day.nextMonthDay:focus {\\n cursor: pointer;\\n outline: 0;\\n background: #e6e6e6;\\n border-color: #e6e6e6;\\n}\\n.flatpickr-day.today {\\n border-color: #959ea9;\\n}\\n.flatpickr-day.today:hover,\\n.flatpickr-day.today:focus {\\n border-color: #959ea9;\\n background: #959ea9;\\n color: #fff;\\n}\\n.flatpickr-day.selected,\\n.flatpickr-day.startRange,\\n.flatpickr-day.endRange,\\n.flatpickr-day.selected.inRange,\\n.flatpickr-day.startRange.inRange,\\n.flatpickr-day.endRange.inRange,\\n.flatpickr-day.selected:focus,\\n.flatpickr-day.startRange:focus,\\n.flatpickr-day.endRange:focus,\\n.flatpickr-day.selected:hover,\\n.flatpickr-day.startRange:hover,\\n.flatpickr-day.endRange:hover,\\n.flatpickr-day.selected.prevMonthDay,\\n.flatpickr-day.startRange.prevMonthDay,\\n.flatpickr-day.endRange.prevMonthDay,\\n.flatpickr-day.selected.nextMonthDay,\\n.flatpickr-day.startRange.nextMonthDay,\\n.flatpickr-day.endRange.nextMonthDay {\\n background: #569ff7;\\n -webkit-box-shadow: none;\\n box-shadow: none;\\n color: #fff;\\n border-color: #569ff7;\\n}\\n.flatpickr-day.selected.startRange,\\n.flatpickr-day.startRange.startRange,\\n.flatpickr-day.endRange.startRange {\\n border-radius: 50px 0 0 50px;\\n}\\n.flatpickr-day.selected.endRange,\\n.flatpickr-day.startRange.endRange,\\n.flatpickr-day.endRange.endRange {\\n border-radius: 0 50px 50px 0;\\n}\\n.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),\\n.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),\\n.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {\\n -webkit-box-shadow: -10px 0 0 #569ff7;\\n box-shadow: -10px 0 0 #569ff7;\\n}\\n.flatpickr-day.selected.startRange.endRange,\\n.flatpickr-day.startRange.startRange.endRange,\\n.flatpickr-day.endRange.startRange.endRange {\\n border-radius: 50px;\\n}\\n.flatpickr-day.inRange {\\n border-radius: 0;\\n -webkit-box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;\\n box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;\\n}\\n.flatpickr-day.flatpickr-disabled,\\n.flatpickr-day.flatpickr-disabled:hover,\\n.flatpickr-day.prevMonthDay,\\n.flatpickr-day.nextMonthDay,\\n.flatpickr-day.notAllowed,\\n.flatpickr-day.notAllowed.prevMonthDay,\\n.flatpickr-day.notAllowed.nextMonthDay {\\n color: rgba(57,57,57,0.3);\\n background: transparent;\\n border-color: transparent;\\n cursor: default;\\n}\\n.flatpickr-day.flatpickr-disabled,\\n.flatpickr-day.flatpickr-disabled:hover {\\n cursor: not-allowed;\\n color: rgba(57,57,57,0.1);\\n}\\n.flatpickr-day.week.selected {\\n border-radius: 0;\\n -webkit-box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;\\n box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;\\n}\\n.flatpickr-day.hidden {\\n visibility: hidden;\\n}\\n.rangeMode .flatpickr-day {\\n margin-top: 1px;\\n}\\n.flatpickr-weekwrapper {\\n float: left;\\n}\\n.flatpickr-weekwrapper .flatpickr-weeks {\\n padding: 0 12px;\\n -webkit-box-shadow: 1px 0 0 #e6e6e6;\\n box-shadow: 1px 0 0 #e6e6e6;\\n}\\n.flatpickr-weekwrapper .flatpickr-weekday {\\n float: none;\\n width: 100%;\\n line-height: 28px;\\n}\\n.flatpickr-weekwrapper span.flatpickr-day,\\n.flatpickr-weekwrapper span.flatpickr-day:hover {\\n display: block;\\n width: 100%;\\n max-width: none;\\n color: rgba(57,57,57,0.3);\\n background: transparent;\\n cursor: default;\\n border: none;\\n}\\n.flatpickr-innerContainer {\\n display: block;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n overflow: hidden;\\n}\\n.flatpickr-rContainer {\\n display: inline-block;\\n padding: 0;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.flatpickr-time {\\n text-align: center;\\n outline: 0;\\n display: block;\\n height: 0;\\n line-height: 40px;\\n max-height: 40px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n overflow: hidden;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n}\\n.flatpickr-time:after {\\n content: \\\"\\\";\\n display: table;\\n clear: both;\\n}\\n.flatpickr-time .numInputWrapper {\\n -webkit-box-flex: 1;\\n -webkit-flex: 1;\\n -ms-flex: 1;\\n flex: 1;\\n width: 40%;\\n height: 40px;\\n float: left;\\n}\\n.flatpickr-time .numInputWrapper span.arrowUp:after {\\n border-bottom-color: #393939;\\n}\\n.flatpickr-time .numInputWrapper span.arrowDown:after {\\n border-top-color: #393939;\\n}\\n.flatpickr-time.hasSeconds .numInputWrapper {\\n width: 26%;\\n}\\n.flatpickr-time.time24hr .numInputWrapper {\\n width: 49%;\\n}\\n.flatpickr-time input {\\n background: transparent;\\n -webkit-box-shadow: none;\\n box-shadow: none;\\n border: 0;\\n border-radius: 0;\\n text-align: center;\\n margin: 0;\\n padding: 0;\\n height: inherit;\\n line-height: inherit;\\n color: #393939;\\n font-size: 14px;\\n position: relative;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n -webkit-appearance: textfield;\\n -moz-appearance: textfield;\\n appearance: textfield;\\n}\\n.flatpickr-time input.flatpickr-hour {\\n font-weight: bold;\\n}\\n.flatpickr-time input.flatpickr-minute,\\n.flatpickr-time input.flatpickr-second {\\n font-weight: 400;\\n}\\n.flatpickr-time input:focus {\\n outline: 0;\\n border: 0;\\n}\\n.flatpickr-time .flatpickr-time-separator,\\n.flatpickr-time .flatpickr-am-pm {\\n height: inherit;\\n float: left;\\n line-height: inherit;\\n color: #393939;\\n font-weight: bold;\\n width: 2%;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n -webkit-align-self: center;\\n -ms-flex-item-align: center;\\n align-self: center;\\n}\\n.flatpickr-time .flatpickr-am-pm {\\n outline: 0;\\n width: 18%;\\n cursor: pointer;\\n text-align: center;\\n font-weight: 400;\\n}\\n.flatpickr-time input:hover,\\n.flatpickr-time .flatpickr-am-pm:hover,\\n.flatpickr-time input:focus,\\n.flatpickr-time .flatpickr-am-pm:focus {\\n background: #eee;\\n}\\n.flatpickr-input[readonly] {\\n cursor: pointer;\\n}\\n@-webkit-keyframes fpFadeInDown {\\n from {\\n opacity: 0;\\n -webkit-transform: translate3d(0, -20px, 0);\\n transform: translate3d(0, -20px, 0);\\n }\\n to {\\n opacity: 1;\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0);\\n }\\n}\\n@keyframes fpFadeInDown {\\n from {\\n opacity: 0;\\n -webkit-transform: translate3d(0, -20px, 0);\\n transform: translate3d(0, -20px, 0);\\n }\\n to {\\n opacity: 1;\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0);\\n }\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/flatpickr/dist/flatpickr.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,uBAAuB;EACvB,UAAU;EACV,aAAa;EACb,kBAAkB;EAClB,kBAAkB;EAClB,UAAU;EACV,uBAAuB;UACf,eAAe;EACvB,cAAc;EACd,SAAS;EACT,eAAe;EACf,iBAAiB;EACjB,kBAAkB;EAClB,kBAAkB;EAClB,gBAAgB;EAChB,8BAA8B;UACtB,sBAAsB;EAC9B,8BAA8B;MAC1B,0BAA0B;EAC9B,gBAAgB;EAChB,qHAAqH;UAC7G,6GAA6G;AACvH;AACA;;EAEE,UAAU;EACV,iBAAiB;EACjB,mBAAmB;AACrB;AACA;EACE,qBAAqB;EACrB,cAAc;AAChB;AACA;EACE,oEAAoE;UAC5D,4DAA4D;AACtE;AACA;EACE,cAAc;EACd,kBAAkB;EAClB,QAAQ;AACV;AACA;EACE,kBAAkB;EAClB,qBAAqB;AACvB;AACA;EACE,YAAY;EACZ,cAAc;AAChB;AACA;EACE,mCAAmC;UAC3B,2BAA2B;AACrC;AACA;EACE,qDAAqD;UAC7C,6CAA6C;AACvD;AACA;;EAEE,gBAAgB;EAChB,6BAA6B;EAC7B,4BAA4B;AAC9B;AACA;EACE,cAAc;AAChB;AACA;EACE,YAAY;EACZ,6BAA6B;AAC/B;AACA;EACE,YAAY;AACd;AACA;;EAEE,kBAAkB;EAClB,cAAc;EACd,oBAAoB;EACpB,yBAAyB;EACzB,WAAW;EACX,SAAS;EACT,QAAQ;EACR,UAAU;AACZ;AACA;;;;EAIE,UAAU;EACV,WAAW;AACb;AACA;;EAEE,SAAS;EACT,UAAU;AACZ;AACA;EACE,iBAAiB;EACjB,cAAc;AAChB;AACA;EACE,iBAAiB;EACjB,cAAc;AAChB;AACA;;EAEE,YAAY;AACd;AACA;EACE,4BAA4B;AAC9B;AACA;EACE,yBAAyB;AAC3B;AACA;;EAEE,SAAS;AACX;AACA;EACE,yBAAyB;AAC3B;AACA;EACE,sBAAsB;AACxB;AACA;EACE,UAAU;AACZ;AACA;EACE,kBAAkB;EAClB,qBAAqB;AACvB;AACA;EACE,oBAAoB;EACpB,qBAAqB;EACrB,oBAAoB;EACpB,aAAa;AACf;AACA;EACE,uBAAuB;EACvB,sBAAsB;EACtB,qBAAqB;EACrB,YAAY;EACZ,cAAc;EACd,kBAAkB;EAClB,kBAAkB;EAClB,yBAAyB;KACtB,sBAAsB;MACrB,qBAAqB;UACjB,iBAAiB;EACzB,gBAAgB;EAChB,mBAAmB;EACnB,eAAe;MACX,WAAW;UACP,OAAO;AACjB;AACA;;EAEE,yBAAyB;KACtB,sBAAsB;MACrB,qBAAqB;UACjB,iBAAiB;EACzB,qBAAqB;EACrB,eAAe;EACf,kBAAkB;EAClB,MAAM;EACN,YAAY;EACZ,aAAa;EACb,UAAU;EACV,sBAAsB;EACtB,qBAAqB;AACvB;AACA;;EAEE,aAAa;AACf;AACA;;EAEE,kBAAkB;AACpB;AACA;;AAEA;yBACyB;AACzB;OACO;EACL,OAAO;AACT;uBACuB;AACvB;OACO;AACP;AACA;yBACyB;AACzB;uBACuB;AACvB;;AAEA;yBACyB;AACzB;OACO;EACL,QAAQ;AACV;uBACuB;AACvB;OACO;AACP;AACA;yBACyB;AACzB;uBACuB;AACvB;;EAEE,cAAc;AAChB;AACA;;EAEE,aAAa;AACf;AACA;;EAEE,WAAW;EACX,YAAY;AACd;AACA;;EAEE,6BAA6B;EAC7B,qBAAqB;EACrB,aAAa;AACf;AACA;EACE,kBAAkB;EAClB,YAAY;AACd;AACA;;EAEE,qBAAqB;AACvB;AACA;EACE,WAAW;AACb;AACA;EACE,aAAa;AACf;AACA;;EAEE,SAAS;EACT,wBAAwB;AAC1B;AACA;EACE,kBAAkB;EAClB,QAAQ;EACR,WAAW;EACX,oBAAoB;EACpB,WAAW;EACX,gBAAgB;EAChB,UAAU;EACV,eAAe;EACf,qCAAqC;EACrC,8BAA8B;UACtB,sBAAsB;AAChC;AACA;EACE,2BAA2B;AAC7B;AACA;EACE,2BAA2B;AAC7B;AACA;EACE,cAAc;EACd,WAAW;EACX,kBAAkB;AACpB;AACA;EACE,MAAM;EACN,gBAAgB;AAClB;AACA;EACE,kCAAkC;EAClC,mCAAmC;EACnC,2CAA2C;EAC3C,QAAQ;AACV;AACA;EACE,QAAQ;AACV;AACA;EACE,kCAAkC;EAClC,mCAAmC;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\",\"sourcesContent\":[\".flatpickr-calendar {\\n background: transparent;\\n opacity: 0;\\n display: none;\\n text-align: center;\\n visibility: hidden;\\n padding: 0;\\n -webkit-animation: none;\\n animation: none;\\n direction: ltr;\\n border: 0;\\n font-size: 14px;\\n line-height: 24px;\\n border-radius: 5px;\\n position: absolute;\\n width: 307.875px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n -ms-touch-action: manipulation;\\n touch-action: manipulation;\\n background: #fff;\\n -webkit-box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08);\\n box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08);\\n}\\n.flatpickr-calendar.open,\\n.flatpickr-calendar.inline {\\n opacity: 1;\\n max-height: 640px;\\n visibility: visible;\\n}\\n.flatpickr-calendar.open {\\n display: inline-block;\\n z-index: 99999;\\n}\\n.flatpickr-calendar.animate.open {\\n -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);\\n animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);\\n}\\n.flatpickr-calendar.inline {\\n display: block;\\n position: relative;\\n top: 2px;\\n}\\n.flatpickr-calendar.static {\\n position: absolute;\\n top: calc(100% + 2px);\\n}\\n.flatpickr-calendar.static.open {\\n z-index: 999;\\n display: block;\\n}\\n.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {\\n -webkit-box-shadow: none !important;\\n box-shadow: none !important;\\n}\\n.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {\\n -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;\\n box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;\\n}\\n.flatpickr-calendar .hasWeeks .dayContainer,\\n.flatpickr-calendar .hasTime .dayContainer {\\n border-bottom: 0;\\n border-bottom-right-radius: 0;\\n border-bottom-left-radius: 0;\\n}\\n.flatpickr-calendar .hasWeeks .dayContainer {\\n border-left: 0;\\n}\\n.flatpickr-calendar.hasTime .flatpickr-time {\\n height: 40px;\\n border-top: 1px solid #e6e6e6;\\n}\\n.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {\\n height: auto;\\n}\\n.flatpickr-calendar:before,\\n.flatpickr-calendar:after {\\n position: absolute;\\n display: block;\\n pointer-events: none;\\n border: solid transparent;\\n content: '';\\n height: 0;\\n width: 0;\\n left: 22px;\\n}\\n.flatpickr-calendar.rightMost:before,\\n.flatpickr-calendar.arrowRight:before,\\n.flatpickr-calendar.rightMost:after,\\n.flatpickr-calendar.arrowRight:after {\\n left: auto;\\n right: 22px;\\n}\\n.flatpickr-calendar.arrowCenter:before,\\n.flatpickr-calendar.arrowCenter:after {\\n left: 50%;\\n right: 50%;\\n}\\n.flatpickr-calendar:before {\\n border-width: 5px;\\n margin: 0 -5px;\\n}\\n.flatpickr-calendar:after {\\n border-width: 4px;\\n margin: 0 -4px;\\n}\\n.flatpickr-calendar.arrowTop:before,\\n.flatpickr-calendar.arrowTop:after {\\n bottom: 100%;\\n}\\n.flatpickr-calendar.arrowTop:before {\\n border-bottom-color: #e6e6e6;\\n}\\n.flatpickr-calendar.arrowTop:after {\\n border-bottom-color: #fff;\\n}\\n.flatpickr-calendar.arrowBottom:before,\\n.flatpickr-calendar.arrowBottom:after {\\n top: 100%;\\n}\\n.flatpickr-calendar.arrowBottom:before {\\n border-top-color: #e6e6e6;\\n}\\n.flatpickr-calendar.arrowBottom:after {\\n border-top-color: #fff;\\n}\\n.flatpickr-calendar:focus {\\n outline: 0;\\n}\\n.flatpickr-wrapper {\\n position: relative;\\n display: inline-block;\\n}\\n.flatpickr-months {\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n}\\n.flatpickr-months .flatpickr-month {\\n background: transparent;\\n color: rgba(0,0,0,0.9);\\n fill: rgba(0,0,0,0.9);\\n height: 34px;\\n line-height: 1;\\n text-align: center;\\n position: relative;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n overflow: hidden;\\n -webkit-box-flex: 1;\\n -webkit-flex: 1;\\n -ms-flex: 1;\\n flex: 1;\\n}\\n.flatpickr-months .flatpickr-prev-month,\\n.flatpickr-months .flatpickr-next-month {\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n text-decoration: none;\\n cursor: pointer;\\n position: absolute;\\n top: 0;\\n height: 34px;\\n padding: 10px;\\n z-index: 3;\\n color: rgba(0,0,0,0.9);\\n fill: rgba(0,0,0,0.9);\\n}\\n.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,\\n.flatpickr-months .flatpickr-next-month.flatpickr-disabled {\\n display: none;\\n}\\n.flatpickr-months .flatpickr-prev-month i,\\n.flatpickr-months .flatpickr-next-month i {\\n position: relative;\\n}\\n.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,\\n.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {\\n/*\\n /*rtl:begin:ignore*/\\n/*\\n */\\n left: 0;\\n/*\\n /*rtl:end:ignore*/\\n/*\\n */\\n}\\n/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,\\n.flatpickr-months .flatpickr-next-month.flatpickr-next-month {\\n/*\\n /*rtl:begin:ignore*/\\n/*\\n */\\n right: 0;\\n/*\\n /*rtl:end:ignore*/\\n/*\\n */\\n}\\n/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month:hover,\\n.flatpickr-months .flatpickr-next-month:hover {\\n color: #959ea9;\\n}\\n.flatpickr-months .flatpickr-prev-month:hover svg,\\n.flatpickr-months .flatpickr-next-month:hover svg {\\n fill: #f64747;\\n}\\n.flatpickr-months .flatpickr-prev-month svg,\\n.flatpickr-months .flatpickr-next-month svg {\\n width: 14px;\\n height: 14px;\\n}\\n.flatpickr-months .flatpickr-prev-month svg path,\\n.flatpickr-months .flatpickr-next-month svg path {\\n -webkit-transition: fill 0.1s;\\n transition: fill 0.1s;\\n fill: inherit;\\n}\\n.numInputWrapper {\\n position: relative;\\n height: auto;\\n}\\n.numInputWrapper input,\\n.numInputWrapper span {\\n display: inline-block;\\n}\\n.numInputWrapper input {\\n width: 100%;\\n}\\n.numInputWrapper input::-ms-clear {\\n display: none;\\n}\\n.numInputWrapper input::-webkit-outer-spin-button,\\n.numInputWrapper input::-webkit-inner-spin-button {\\n margin: 0;\\n -webkit-appearance: none;\\n}\\n.numInputWrapper span {\\n position: absolute;\\n right: 0;\\n width: 14px;\\n padding: 0 4px 0 2px;\\n height: 50%;\\n line-height: 50%;\\n opacity: 0;\\n cursor: pointer;\\n border: 1px solid rgba(57,57,57,0.15);\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.numInputWrapper span:hover {\\n background: rgba(0,0,0,0.1);\\n}\\n.numInputWrapper span:active {\\n background: rgba(0,0,0,0.2);\\n}\\n.numInputWrapper span:after {\\n display: block;\\n content: \\\"\\\";\\n position: absolute;\\n}\\n.numInputWrapper span.arrowUp {\\n top: 0;\\n border-bottom: 0;\\n}\\n.numInputWrapper span.arrowUp:after {\\n border-left: 4px solid transparent;\\n border-right: 4px solid transparent;\\n border-bottom: 4px solid rgba(57,57,57,0.6);\\n top: 26%;\\n}\\n.numInputWrapper span.arrowDown {\\n top: 50%;\\n}\\n.numInputWrapper span.arrowDown:after {\\n border-left: 4px solid transparent;\\n border-right: 4px solid transparent;\\n border-top: 4px solid rgba(57,57,57,0.6);\\n top: 40%;\\n}\\n.numInputWrapper span svg {\\n width: inherit;\\n height: auto;\\n}\\n.numInputWrapper span svg path {\\n fill: rgba(0,0,0,0.5);\\n}\\n.numInputWrapper:hover {\\n background: rgba(0,0,0,0.05);\\n}\\n.numInputWrapper:hover span {\\n opacity: 1;\\n}\\n.flatpickr-current-month {\\n font-size: 135%;\\n line-height: inherit;\\n font-weight: 300;\\n color: inherit;\\n position: absolute;\\n width: 75%;\\n left: 12.5%;\\n padding: 7.48px 0 0 0;\\n line-height: 1;\\n height: 34px;\\n display: inline-block;\\n text-align: center;\\n -webkit-transform: translate3d(0px, 0px, 0px);\\n transform: translate3d(0px, 0px, 0px);\\n}\\n.flatpickr-current-month span.cur-month {\\n font-family: inherit;\\n font-weight: 700;\\n color: inherit;\\n display: inline-block;\\n margin-left: 0.5ch;\\n padding: 0;\\n}\\n.flatpickr-current-month span.cur-month:hover {\\n background: rgba(0,0,0,0.05);\\n}\\n.flatpickr-current-month .numInputWrapper {\\n width: 6ch;\\n width: 7ch\\\\0;\\n display: inline-block;\\n}\\n.flatpickr-current-month .numInputWrapper span.arrowUp:after {\\n border-bottom-color: rgba(0,0,0,0.9);\\n}\\n.flatpickr-current-month .numInputWrapper span.arrowDown:after {\\n border-top-color: rgba(0,0,0,0.9);\\n}\\n.flatpickr-current-month input.cur-year {\\n background: transparent;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: inherit;\\n cursor: text;\\n padding: 0 0 0 0.5ch;\\n margin: 0;\\n display: inline-block;\\n font-size: inherit;\\n font-family: inherit;\\n font-weight: 300;\\n line-height: inherit;\\n height: auto;\\n border: 0;\\n border-radius: 0;\\n vertical-align: initial;\\n -webkit-appearance: textfield;\\n -moz-appearance: textfield;\\n appearance: textfield;\\n}\\n.flatpickr-current-month input.cur-year:focus {\\n outline: 0;\\n}\\n.flatpickr-current-month input.cur-year[disabled],\\n.flatpickr-current-month input.cur-year[disabled]:hover {\\n font-size: 100%;\\n color: rgba(0,0,0,0.5);\\n background: transparent;\\n pointer-events: none;\\n}\\n.flatpickr-current-month .flatpickr-monthDropdown-months {\\n appearance: menulist;\\n background: transparent;\\n border: none;\\n border-radius: 0;\\n box-sizing: border-box;\\n color: inherit;\\n cursor: pointer;\\n font-size: inherit;\\n font-family: inherit;\\n font-weight: 300;\\n height: auto;\\n line-height: inherit;\\n margin: -1px 0 0 0;\\n outline: none;\\n padding: 0 0 0 0.5ch;\\n position: relative;\\n vertical-align: initial;\\n -webkit-box-sizing: border-box;\\n -webkit-appearance: menulist;\\n -moz-appearance: menulist;\\n width: auto;\\n}\\n.flatpickr-current-month .flatpickr-monthDropdown-months:focus,\\n.flatpickr-current-month .flatpickr-monthDropdown-months:active {\\n outline: none;\\n}\\n.flatpickr-current-month .flatpickr-monthDropdown-months:hover {\\n background: rgba(0,0,0,0.05);\\n}\\n.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {\\n background-color: transparent;\\n outline: none;\\n padding: 0;\\n}\\n.flatpickr-weekdays {\\n background: transparent;\\n text-align: center;\\n overflow: hidden;\\n width: 100%;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -webkit-align-items: center;\\n -ms-flex-align: center;\\n align-items: center;\\n height: 28px;\\n}\\n.flatpickr-weekdays .flatpickr-weekdaycontainer {\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-flex: 1;\\n -webkit-flex: 1;\\n -ms-flex: 1;\\n flex: 1;\\n}\\nspan.flatpickr-weekday {\\n cursor: default;\\n font-size: 90%;\\n background: transparent;\\n color: rgba(0,0,0,0.54);\\n line-height: 1;\\n margin: 0;\\n text-align: center;\\n display: block;\\n -webkit-box-flex: 1;\\n -webkit-flex: 1;\\n -ms-flex: 1;\\n flex: 1;\\n font-weight: bolder;\\n}\\n.dayContainer,\\n.flatpickr-weeks {\\n padding: 1px 0 0 0;\\n}\\n.flatpickr-days {\\n position: relative;\\n overflow: hidden;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: start;\\n -webkit-align-items: flex-start;\\n -ms-flex-align: start;\\n align-items: flex-start;\\n width: 307.875px;\\n}\\n.flatpickr-days:focus {\\n outline: 0;\\n}\\n.dayContainer {\\n padding: 0;\\n outline: 0;\\n text-align: left;\\n width: 307.875px;\\n min-width: 307.875px;\\n max-width: 307.875px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n display: inline-block;\\n display: -ms-flexbox;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: flex;\\n -webkit-flex-wrap: wrap;\\n flex-wrap: wrap;\\n -ms-flex-wrap: wrap;\\n -ms-flex-pack: justify;\\n -webkit-justify-content: space-around;\\n justify-content: space-around;\\n -webkit-transform: translate3d(0px, 0px, 0px);\\n transform: translate3d(0px, 0px, 0px);\\n opacity: 1;\\n}\\n.dayContainer + .dayContainer {\\n -webkit-box-shadow: -1px 0 0 #e6e6e6;\\n box-shadow: -1px 0 0 #e6e6e6;\\n}\\n.flatpickr-day {\\n background: none;\\n border: 1px solid transparent;\\n border-radius: 150px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #393939;\\n cursor: pointer;\\n font-weight: 400;\\n width: 14.2857143%;\\n -webkit-flex-basis: 14.2857143%;\\n -ms-flex-preferred-size: 14.2857143%;\\n flex-basis: 14.2857143%;\\n max-width: 39px;\\n height: 39px;\\n line-height: 39px;\\n margin: 0;\\n display: inline-block;\\n position: relative;\\n -webkit-box-pack: center;\\n -webkit-justify-content: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n text-align: center;\\n}\\n.flatpickr-day.inRange,\\n.flatpickr-day.prevMonthDay.inRange,\\n.flatpickr-day.nextMonthDay.inRange,\\n.flatpickr-day.today.inRange,\\n.flatpickr-day.prevMonthDay.today.inRange,\\n.flatpickr-day.nextMonthDay.today.inRange,\\n.flatpickr-day:hover,\\n.flatpickr-day.prevMonthDay:hover,\\n.flatpickr-day.nextMonthDay:hover,\\n.flatpickr-day:focus,\\n.flatpickr-day.prevMonthDay:focus,\\n.flatpickr-day.nextMonthDay:focus {\\n cursor: pointer;\\n outline: 0;\\n background: #e6e6e6;\\n border-color: #e6e6e6;\\n}\\n.flatpickr-day.today {\\n border-color: #959ea9;\\n}\\n.flatpickr-day.today:hover,\\n.flatpickr-day.today:focus {\\n border-color: #959ea9;\\n background: #959ea9;\\n color: #fff;\\n}\\n.flatpickr-day.selected,\\n.flatpickr-day.startRange,\\n.flatpickr-day.endRange,\\n.flatpickr-day.selected.inRange,\\n.flatpickr-day.startRange.inRange,\\n.flatpickr-day.endRange.inRange,\\n.flatpickr-day.selected:focus,\\n.flatpickr-day.startRange:focus,\\n.flatpickr-day.endRange:focus,\\n.flatpickr-day.selected:hover,\\n.flatpickr-day.startRange:hover,\\n.flatpickr-day.endRange:hover,\\n.flatpickr-day.selected.prevMonthDay,\\n.flatpickr-day.startRange.prevMonthDay,\\n.flatpickr-day.endRange.prevMonthDay,\\n.flatpickr-day.selected.nextMonthDay,\\n.flatpickr-day.startRange.nextMonthDay,\\n.flatpickr-day.endRange.nextMonthDay {\\n background: #569ff7;\\n -webkit-box-shadow: none;\\n box-shadow: none;\\n color: #fff;\\n border-color: #569ff7;\\n}\\n.flatpickr-day.selected.startRange,\\n.flatpickr-day.startRange.startRange,\\n.flatpickr-day.endRange.startRange {\\n border-radius: 50px 0 0 50px;\\n}\\n.flatpickr-day.selected.endRange,\\n.flatpickr-day.startRange.endRange,\\n.flatpickr-day.endRange.endRange {\\n border-radius: 0 50px 50px 0;\\n}\\n.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),\\n.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),\\n.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {\\n -webkit-box-shadow: -10px 0 0 #569ff7;\\n box-shadow: -10px 0 0 #569ff7;\\n}\\n.flatpickr-day.selected.startRange.endRange,\\n.flatpickr-day.startRange.startRange.endRange,\\n.flatpickr-day.endRange.startRange.endRange {\\n border-radius: 50px;\\n}\\n.flatpickr-day.inRange {\\n border-radius: 0;\\n -webkit-box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;\\n box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;\\n}\\n.flatpickr-day.flatpickr-disabled,\\n.flatpickr-day.flatpickr-disabled:hover,\\n.flatpickr-day.prevMonthDay,\\n.flatpickr-day.nextMonthDay,\\n.flatpickr-day.notAllowed,\\n.flatpickr-day.notAllowed.prevMonthDay,\\n.flatpickr-day.notAllowed.nextMonthDay {\\n color: rgba(57,57,57,0.3);\\n background: transparent;\\n border-color: transparent;\\n cursor: default;\\n}\\n.flatpickr-day.flatpickr-disabled,\\n.flatpickr-day.flatpickr-disabled:hover {\\n cursor: not-allowed;\\n color: rgba(57,57,57,0.1);\\n}\\n.flatpickr-day.week.selected {\\n border-radius: 0;\\n -webkit-box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;\\n box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;\\n}\\n.flatpickr-day.hidden {\\n visibility: hidden;\\n}\\n.rangeMode .flatpickr-day {\\n margin-top: 1px;\\n}\\n.flatpickr-weekwrapper {\\n float: left;\\n}\\n.flatpickr-weekwrapper .flatpickr-weeks {\\n padding: 0 12px;\\n -webkit-box-shadow: 1px 0 0 #e6e6e6;\\n box-shadow: 1px 0 0 #e6e6e6;\\n}\\n.flatpickr-weekwrapper .flatpickr-weekday {\\n float: none;\\n width: 100%;\\n line-height: 28px;\\n}\\n.flatpickr-weekwrapper span.flatpickr-day,\\n.flatpickr-weekwrapper span.flatpickr-day:hover {\\n display: block;\\n width: 100%;\\n max-width: none;\\n color: rgba(57,57,57,0.3);\\n background: transparent;\\n cursor: default;\\n border: none;\\n}\\n.flatpickr-innerContainer {\\n display: block;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n overflow: hidden;\\n}\\n.flatpickr-rContainer {\\n display: inline-block;\\n padding: 0;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.flatpickr-time {\\n text-align: center;\\n outline: 0;\\n display: block;\\n height: 0;\\n line-height: 40px;\\n max-height: 40px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n overflow: hidden;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n}\\n.flatpickr-time:after {\\n content: \\\"\\\";\\n display: table;\\n clear: both;\\n}\\n.flatpickr-time .numInputWrapper {\\n -webkit-box-flex: 1;\\n -webkit-flex: 1;\\n -ms-flex: 1;\\n flex: 1;\\n width: 40%;\\n height: 40px;\\n float: left;\\n}\\n.flatpickr-time .numInputWrapper span.arrowUp:after {\\n border-bottom-color: #393939;\\n}\\n.flatpickr-time .numInputWrapper span.arrowDown:after {\\n border-top-color: #393939;\\n}\\n.flatpickr-time.hasSeconds .numInputWrapper {\\n width: 26%;\\n}\\n.flatpickr-time.time24hr .numInputWrapper {\\n width: 49%;\\n}\\n.flatpickr-time input {\\n background: transparent;\\n -webkit-box-shadow: none;\\n box-shadow: none;\\n border: 0;\\n border-radius: 0;\\n text-align: center;\\n margin: 0;\\n padding: 0;\\n height: inherit;\\n line-height: inherit;\\n color: #393939;\\n font-size: 14px;\\n position: relative;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n -webkit-appearance: textfield;\\n -moz-appearance: textfield;\\n appearance: textfield;\\n}\\n.flatpickr-time input.flatpickr-hour {\\n font-weight: bold;\\n}\\n.flatpickr-time input.flatpickr-minute,\\n.flatpickr-time input.flatpickr-second {\\n font-weight: 400;\\n}\\n.flatpickr-time input:focus {\\n outline: 0;\\n border: 0;\\n}\\n.flatpickr-time .flatpickr-time-separator,\\n.flatpickr-time .flatpickr-am-pm {\\n height: inherit;\\n float: left;\\n line-height: inherit;\\n color: #393939;\\n font-weight: bold;\\n width: 2%;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n -webkit-align-self: center;\\n -ms-flex-item-align: center;\\n align-self: center;\\n}\\n.flatpickr-time .flatpickr-am-pm {\\n outline: 0;\\n width: 18%;\\n cursor: pointer;\\n text-align: center;\\n font-weight: 400;\\n}\\n.flatpickr-time input:hover,\\n.flatpickr-time .flatpickr-am-pm:hover,\\n.flatpickr-time input:focus,\\n.flatpickr-time .flatpickr-am-pm:focus {\\n background: #eee;\\n}\\n.flatpickr-input[readonly] {\\n cursor: pointer;\\n}\\n@-webkit-keyframes fpFadeInDown {\\n from {\\n opacity: 0;\\n -webkit-transform: translate3d(0, -20px, 0);\\n transform: translate3d(0, -20px, 0);\\n }\\n to {\\n opacity: 1;\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0);\\n }\\n}\\n@keyframes fpFadeInDown {\\n from {\\n opacity: 0;\\n -webkit-transform: translate3d(0, -20px, 0);\\n transform: translate3d(0, -20px, 0);\\n }\\n to {\\n opacity: 1;\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0);\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* Functional styling;\\n * These styles are required for noUiSlider to function.\\n * You don't need to change these rules to apply your design.\\n */\\n.noUi-target,\\n.noUi-target * {\\n -webkit-touch-callout: none;\\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\n -webkit-user-select: none;\\n -ms-touch-action: none;\\n touch-action: none;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n user-select: none;\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.noUi-target {\\n position: relative;\\n}\\n.noUi-base,\\n.noUi-connects {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n z-index: 1;\\n}\\n/* Wrapper for all connect elements.\\n */\\n.noUi-connects {\\n overflow: hidden;\\n z-index: 0;\\n}\\n.noUi-connect,\\n.noUi-origin {\\n will-change: transform;\\n position: absolute;\\n z-index: 1;\\n top: 0;\\n right: 0;\\n height: 100%;\\n width: 100%;\\n -ms-transform-origin: 0 0;\\n -webkit-transform-origin: 0 0;\\n -webkit-transform-style: preserve-3d;\\n transform-origin: 0 0;\\n transform-style: flat;\\n}\\n/* Offset direction\\n */\\n.noUi-txt-dir-rtl.noUi-horizontal .noUi-origin {\\n left: 0;\\n right: auto;\\n}\\n/* Give origins 0 height/width so they don't interfere with clicking the\\n * connect elements.\\n */\\n.noUi-vertical .noUi-origin {\\n top: -100%;\\n width: 0;\\n}\\n.noUi-horizontal .noUi-origin {\\n height: 0;\\n}\\n.noUi-handle {\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n position: absolute;\\n}\\n.noUi-touch-area {\\n height: 100%;\\n width: 100%;\\n}\\n.noUi-state-tap .noUi-connect,\\n.noUi-state-tap .noUi-origin {\\n -webkit-transition: transform 0.3s;\\n transition: transform 0.3s;\\n}\\n.noUi-state-drag * {\\n cursor: inherit !important;\\n}\\n/* Slider size and handle placement;\\n */\\n.noUi-horizontal {\\n height: 18px;\\n}\\n.noUi-horizontal .noUi-handle {\\n width: 34px;\\n height: 28px;\\n right: -17px;\\n top: -6px;\\n}\\n.noUi-vertical {\\n width: 18px;\\n}\\n.noUi-vertical .noUi-handle {\\n width: 28px;\\n height: 34px;\\n right: -6px;\\n bottom: -17px;\\n}\\n.noUi-txt-dir-rtl.noUi-horizontal .noUi-handle {\\n left: -17px;\\n right: auto;\\n}\\n/* Styling;\\n * Giving the connect element a border radius causes issues with using transform: scale\\n */\\n.noUi-target {\\n background: #FAFAFA;\\n border-radius: 4px;\\n border: 1px solid #D3D3D3;\\n box-shadow: inset 0 1px 1px #F0F0F0, 0 3px 6px -5px #BBB;\\n}\\n.noUi-connects {\\n border-radius: 3px;\\n}\\n.noUi-connect {\\n background: #3FB8AF;\\n}\\n/* Handles and cursors;\\n */\\n.noUi-draggable {\\n cursor: ew-resize;\\n}\\n.noUi-vertical .noUi-draggable {\\n cursor: ns-resize;\\n}\\n.noUi-handle {\\n border: 1px solid #D9D9D9;\\n border-radius: 3px;\\n background: #FFF;\\n cursor: default;\\n box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #EBEBEB, 0 3px 6px -3px #BBB;\\n}\\n.noUi-active {\\n box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #DDD, 0 3px 6px -3px #BBB;\\n}\\n/* Handle stripes;\\n */\\n.noUi-handle:before,\\n.noUi-handle:after {\\n content: \\\"\\\";\\n display: block;\\n position: absolute;\\n height: 14px;\\n width: 1px;\\n background: #E8E7E6;\\n left: 14px;\\n top: 6px;\\n}\\n.noUi-handle:after {\\n left: 17px;\\n}\\n.noUi-vertical .noUi-handle:before,\\n.noUi-vertical .noUi-handle:after {\\n width: 14px;\\n height: 1px;\\n left: 6px;\\n top: 14px;\\n}\\n.noUi-vertical .noUi-handle:after {\\n top: 17px;\\n}\\n/* Disabled state;\\n */\\n[disabled] .noUi-connect {\\n background: #B8B8B8;\\n}\\n[disabled].noUi-target,\\n[disabled].noUi-handle,\\n[disabled] .noUi-handle {\\n cursor: not-allowed;\\n}\\n/* Base;\\n *\\n */\\n.noUi-pips,\\n.noUi-pips * {\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.noUi-pips {\\n position: absolute;\\n color: #999;\\n}\\n/* Values;\\n *\\n */\\n.noUi-value {\\n position: absolute;\\n white-space: nowrap;\\n text-align: center;\\n}\\n.noUi-value-sub {\\n color: #ccc;\\n font-size: 10px;\\n}\\n/* Markings;\\n *\\n */\\n.noUi-marker {\\n position: absolute;\\n background: #CCC;\\n}\\n.noUi-marker-sub {\\n background: #AAA;\\n}\\n.noUi-marker-large {\\n background: #AAA;\\n}\\n/* Horizontal layout;\\n *\\n */\\n.noUi-pips-horizontal {\\n padding: 10px 0;\\n height: 80px;\\n top: 100%;\\n left: 0;\\n width: 100%;\\n}\\n.noUi-value-horizontal {\\n -webkit-transform: translate(-50%, 50%);\\n transform: translate(-50%, 50%);\\n}\\n.noUi-rtl .noUi-value-horizontal {\\n -webkit-transform: translate(50%, 50%);\\n transform: translate(50%, 50%);\\n}\\n.noUi-marker-horizontal.noUi-marker {\\n margin-left: -1px;\\n width: 2px;\\n height: 5px;\\n}\\n.noUi-marker-horizontal.noUi-marker-sub {\\n height: 10px;\\n}\\n.noUi-marker-horizontal.noUi-marker-large {\\n height: 15px;\\n}\\n/* Vertical layout;\\n *\\n */\\n.noUi-pips-vertical {\\n padding: 0 10px;\\n height: 100%;\\n top: 0;\\n left: 100%;\\n}\\n.noUi-value-vertical {\\n -webkit-transform: translate(0, -50%);\\n transform: translate(0, -50%);\\n padding-left: 25px;\\n}\\n.noUi-rtl .noUi-value-vertical {\\n -webkit-transform: translate(0, 50%);\\n transform: translate(0, 50%);\\n}\\n.noUi-marker-vertical.noUi-marker {\\n width: 5px;\\n height: 2px;\\n margin-top: -1px;\\n}\\n.noUi-marker-vertical.noUi-marker-sub {\\n width: 10px;\\n}\\n.noUi-marker-vertical.noUi-marker-large {\\n width: 15px;\\n}\\n.noUi-tooltip {\\n display: block;\\n position: absolute;\\n border: 1px solid #D9D9D9;\\n border-radius: 3px;\\n background: #fff;\\n color: #000;\\n padding: 5px;\\n text-align: center;\\n white-space: nowrap;\\n}\\n.noUi-horizontal .noUi-tooltip {\\n -webkit-transform: translate(-50%, 0);\\n transform: translate(-50%, 0);\\n left: 50%;\\n bottom: 120%;\\n}\\n.noUi-vertical .noUi-tooltip {\\n -webkit-transform: translate(0, -50%);\\n transform: translate(0, -50%);\\n top: 50%;\\n right: 120%;\\n}\\n.noUi-horizontal .noUi-origin > .noUi-tooltip {\\n -webkit-transform: translate(50%, 0);\\n transform: translate(50%, 0);\\n left: auto;\\n bottom: 10px;\\n}\\n.noUi-vertical .noUi-origin > .noUi-tooltip {\\n -webkit-transform: translate(0, -18px);\\n transform: translate(0, -18px);\\n top: auto;\\n right: 28px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/nouislider/dist/nouislider.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;EAEE,2BAA2B;EAC3B,6CAA6C;EAC7C,yBAAyB;EACzB,sBAAsB;EACtB,kBAAkB;EAClB,qBAAqB;EACrB,sBAAsB;EACtB,iBAAiB;EACjB,2BAA2B;EAC3B,sBAAsB;AACxB;AACA;EACE,kBAAkB;AACpB;AACA;;EAEE,WAAW;EACX,YAAY;EACZ,kBAAkB;EAClB,UAAU;AACZ;AACA;EACE;AACF;EACE,gBAAgB;EAChB,UAAU;AACZ;AACA;;EAEE,sBAAsB;EACtB,kBAAkB;EAClB,UAAU;EACV,MAAM;EACN,QAAQ;EACR,YAAY;EACZ,WAAW;EACX,yBAAyB;EACzB,6BAA6B;EAC7B,oCAAoC;EACpC,qBAAqB;EACrB,qBAAqB;AACvB;AACA;EACE;AACF;EACE,OAAO;EACP,WAAW;AACb;AACA;;EAEE;AACF;EACE,UAAU;EACV,QAAQ;AACV;AACA;EACE,SAAS;AACX;AACA;EACE,mCAAmC;EACnC,2BAA2B;EAC3B,kBAAkB;AACpB;AACA;EACE,YAAY;EACZ,WAAW;AACb;AACA;;EAEE,kCAAkC;EAClC,0BAA0B;AAC5B;AACA;EACE,0BAA0B;AAC5B;AACA;EACE;AACF;EACE,YAAY;AACd;AACA;EACE,WAAW;EACX,YAAY;EACZ,YAAY;EACZ,SAAS;AACX;AACA;EACE,WAAW;AACb;AACA;EACE,WAAW;EACX,YAAY;EACZ,WAAW;EACX,aAAa;AACf;AACA;EACE,WAAW;EACX,WAAW;AACb;AACA;;EAEE;AACF;EACE,mBAAmB;EACnB,kBAAkB;EAClB,yBAAyB;EACzB,wDAAwD;AAC1D;AACA;EACE,kBAAkB;AACpB;AACA;EACE,mBAAmB;AACrB;AACA;EACE;AACF;EACE,iBAAiB;AACnB;AACA;EACE,iBAAiB;AACnB;AACA;EACE,yBAAyB;EACzB,kBAAkB;EAClB,gBAAgB;EAChB,eAAe;EACf,4EAA4E;AAC9E;AACA;EACE,yEAAyE;AAC3E;AACA;EACE;AACF;;EAEE,WAAW;EACX,cAAc;EACd,kBAAkB;EAClB,YAAY;EACZ,UAAU;EACV,mBAAmB;EACnB,UAAU;EACV,QAAQ;AACV;AACA;EACE,UAAU;AACZ;AACA;;EAEE,WAAW;EACX,WAAW;EACX,SAAS;EACT,SAAS;AACX;AACA;EACE,SAAS;AACX;AACA;EACE;AACF;EACE,mBAAmB;AACrB;AACA;;;EAGE,mBAAmB;AACrB;AACA;;EAEE;AACF;;EAEE,2BAA2B;EAC3B,sBAAsB;AACxB;AACA;EACE,kBAAkB;EAClB,WAAW;AACb;AACA;;EAEE;AACF;EACE,kBAAkB;EAClB,mBAAmB;EACnB,kBAAkB;AACpB;AACA;EACE,WAAW;EACX,eAAe;AACjB;AACA;;EAEE;AACF;EACE,kBAAkB;EAClB,gBAAgB;AAClB;AACA;EACE,gBAAgB;AAClB;AACA;EACE,gBAAgB;AAClB;AACA;;EAEE;AACF;EACE,eAAe;EACf,YAAY;EACZ,SAAS;EACT,OAAO;EACP,WAAW;AACb;AACA;EACE,uCAAuC;EACvC,+BAA+B;AACjC;AACA;EACE,sCAAsC;EACtC,8BAA8B;AAChC;AACA;EACE,iBAAiB;EACjB,UAAU;EACV,WAAW;AACb;AACA;EACE,YAAY;AACd;AACA;EACE,YAAY;AACd;AACA;;EAEE;AACF;EACE,eAAe;EACf,YAAY;EACZ,MAAM;EACN,UAAU;AACZ;AACA;EACE,qCAAqC;EACrC,6BAA6B;EAC7B,kBAAkB;AACpB;AACA;EACE,oCAAoC;EACpC,4BAA4B;AAC9B;AACA;EACE,UAAU;EACV,WAAW;EACX,gBAAgB;AAClB;AACA;EACE,WAAW;AACb;AACA;EACE,WAAW;AACb;AACA;EACE,cAAc;EACd,kBAAkB;EAClB,yBAAyB;EACzB,kBAAkB;EAClB,gBAAgB;EAChB,WAAW;EACX,YAAY;EACZ,kBAAkB;EAClB,mBAAmB;AACrB;AACA;EACE,qCAAqC;EACrC,6BAA6B;EAC7B,SAAS;EACT,YAAY;AACd;AACA;EACE,qCAAqC;EACrC,6BAA6B;EAC7B,QAAQ;EACR,WAAW;AACb;AACA;EACE,oCAAoC;EACpC,4BAA4B;EAC5B,UAAU;EACV,YAAY;AACd;AACA;EACE,sCAAsC;EACtC,8BAA8B;EAC9B,SAAS;EACT,WAAW;AACb\",\"sourcesContent\":[\"/* Functional styling;\\n * These styles are required for noUiSlider to function.\\n * You don't need to change these rules to apply your design.\\n */\\n.noUi-target,\\n.noUi-target * {\\n -webkit-touch-callout: none;\\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\n -webkit-user-select: none;\\n -ms-touch-action: none;\\n touch-action: none;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n user-select: none;\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.noUi-target {\\n position: relative;\\n}\\n.noUi-base,\\n.noUi-connects {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n z-index: 1;\\n}\\n/* Wrapper for all connect elements.\\n */\\n.noUi-connects {\\n overflow: hidden;\\n z-index: 0;\\n}\\n.noUi-connect,\\n.noUi-origin {\\n will-change: transform;\\n position: absolute;\\n z-index: 1;\\n top: 0;\\n right: 0;\\n height: 100%;\\n width: 100%;\\n -ms-transform-origin: 0 0;\\n -webkit-transform-origin: 0 0;\\n -webkit-transform-style: preserve-3d;\\n transform-origin: 0 0;\\n transform-style: flat;\\n}\\n/* Offset direction\\n */\\n.noUi-txt-dir-rtl.noUi-horizontal .noUi-origin {\\n left: 0;\\n right: auto;\\n}\\n/* Give origins 0 height/width so they don't interfere with clicking the\\n * connect elements.\\n */\\n.noUi-vertical .noUi-origin {\\n top: -100%;\\n width: 0;\\n}\\n.noUi-horizontal .noUi-origin {\\n height: 0;\\n}\\n.noUi-handle {\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n position: absolute;\\n}\\n.noUi-touch-area {\\n height: 100%;\\n width: 100%;\\n}\\n.noUi-state-tap .noUi-connect,\\n.noUi-state-tap .noUi-origin {\\n -webkit-transition: transform 0.3s;\\n transition: transform 0.3s;\\n}\\n.noUi-state-drag * {\\n cursor: inherit !important;\\n}\\n/* Slider size and handle placement;\\n */\\n.noUi-horizontal {\\n height: 18px;\\n}\\n.noUi-horizontal .noUi-handle {\\n width: 34px;\\n height: 28px;\\n right: -17px;\\n top: -6px;\\n}\\n.noUi-vertical {\\n width: 18px;\\n}\\n.noUi-vertical .noUi-handle {\\n width: 28px;\\n height: 34px;\\n right: -6px;\\n bottom: -17px;\\n}\\n.noUi-txt-dir-rtl.noUi-horizontal .noUi-handle {\\n left: -17px;\\n right: auto;\\n}\\n/* Styling;\\n * Giving the connect element a border radius causes issues with using transform: scale\\n */\\n.noUi-target {\\n background: #FAFAFA;\\n border-radius: 4px;\\n border: 1px solid #D3D3D3;\\n box-shadow: inset 0 1px 1px #F0F0F0, 0 3px 6px -5px #BBB;\\n}\\n.noUi-connects {\\n border-radius: 3px;\\n}\\n.noUi-connect {\\n background: #3FB8AF;\\n}\\n/* Handles and cursors;\\n */\\n.noUi-draggable {\\n cursor: ew-resize;\\n}\\n.noUi-vertical .noUi-draggable {\\n cursor: ns-resize;\\n}\\n.noUi-handle {\\n border: 1px solid #D9D9D9;\\n border-radius: 3px;\\n background: #FFF;\\n cursor: default;\\n box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #EBEBEB, 0 3px 6px -3px #BBB;\\n}\\n.noUi-active {\\n box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #DDD, 0 3px 6px -3px #BBB;\\n}\\n/* Handle stripes;\\n */\\n.noUi-handle:before,\\n.noUi-handle:after {\\n content: \\\"\\\";\\n display: block;\\n position: absolute;\\n height: 14px;\\n width: 1px;\\n background: #E8E7E6;\\n left: 14px;\\n top: 6px;\\n}\\n.noUi-handle:after {\\n left: 17px;\\n}\\n.noUi-vertical .noUi-handle:before,\\n.noUi-vertical .noUi-handle:after {\\n width: 14px;\\n height: 1px;\\n left: 6px;\\n top: 14px;\\n}\\n.noUi-vertical .noUi-handle:after {\\n top: 17px;\\n}\\n/* Disabled state;\\n */\\n[disabled] .noUi-connect {\\n background: #B8B8B8;\\n}\\n[disabled].noUi-target,\\n[disabled].noUi-handle,\\n[disabled] .noUi-handle {\\n cursor: not-allowed;\\n}\\n/* Base;\\n *\\n */\\n.noUi-pips,\\n.noUi-pips * {\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.noUi-pips {\\n position: absolute;\\n color: #999;\\n}\\n/* Values;\\n *\\n */\\n.noUi-value {\\n position: absolute;\\n white-space: nowrap;\\n text-align: center;\\n}\\n.noUi-value-sub {\\n color: #ccc;\\n font-size: 10px;\\n}\\n/* Markings;\\n *\\n */\\n.noUi-marker {\\n position: absolute;\\n background: #CCC;\\n}\\n.noUi-marker-sub {\\n background: #AAA;\\n}\\n.noUi-marker-large {\\n background: #AAA;\\n}\\n/* Horizontal layout;\\n *\\n */\\n.noUi-pips-horizontal {\\n padding: 10px 0;\\n height: 80px;\\n top: 100%;\\n left: 0;\\n width: 100%;\\n}\\n.noUi-value-horizontal {\\n -webkit-transform: translate(-50%, 50%);\\n transform: translate(-50%, 50%);\\n}\\n.noUi-rtl .noUi-value-horizontal {\\n -webkit-transform: translate(50%, 50%);\\n transform: translate(50%, 50%);\\n}\\n.noUi-marker-horizontal.noUi-marker {\\n margin-left: -1px;\\n width: 2px;\\n height: 5px;\\n}\\n.noUi-marker-horizontal.noUi-marker-sub {\\n height: 10px;\\n}\\n.noUi-marker-horizontal.noUi-marker-large {\\n height: 15px;\\n}\\n/* Vertical layout;\\n *\\n */\\n.noUi-pips-vertical {\\n padding: 0 10px;\\n height: 100%;\\n top: 0;\\n left: 100%;\\n}\\n.noUi-value-vertical {\\n -webkit-transform: translate(0, -50%);\\n transform: translate(0, -50%);\\n padding-left: 25px;\\n}\\n.noUi-rtl .noUi-value-vertical {\\n -webkit-transform: translate(0, 50%);\\n transform: translate(0, 50%);\\n}\\n.noUi-marker-vertical.noUi-marker {\\n width: 5px;\\n height: 2px;\\n margin-top: -1px;\\n}\\n.noUi-marker-vertical.noUi-marker-sub {\\n width: 10px;\\n}\\n.noUi-marker-vertical.noUi-marker-large {\\n width: 15px;\\n}\\n.noUi-tooltip {\\n display: block;\\n position: absolute;\\n border: 1px solid #D9D9D9;\\n border-radius: 3px;\\n background: #fff;\\n color: #000;\\n padding: 5px;\\n text-align: center;\\n white-space: nowrap;\\n}\\n.noUi-horizontal .noUi-tooltip {\\n -webkit-transform: translate(-50%, 0);\\n transform: translate(-50%, 0);\\n left: 50%;\\n bottom: 120%;\\n}\\n.noUi-vertical .noUi-tooltip {\\n -webkit-transform: translate(0, -50%);\\n transform: translate(0, -50%);\\n top: 50%;\\n right: 120%;\\n}\\n.noUi-horizontal .noUi-origin > .noUi-tooltip {\\n -webkit-transform: translate(50%, 0);\\n transform: translate(50%, 0);\\n left: auto;\\n bottom: 10px;\\n}\\n.noUi-vertical .noUi-origin > .noUi-tooltip {\\n -webkit-transform: translate(0, -18px);\\n transform: translate(0, -18px);\\n top: auto;\\n right: 28px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".select2-container {\\n box-sizing: border-box;\\n display: inline-block;\\n margin: 0;\\n position: relative;\\n vertical-align: middle; }\\n .select2-container .select2-selection--single {\\n box-sizing: border-box;\\n cursor: pointer;\\n display: block;\\n height: 28px;\\n user-select: none;\\n -webkit-user-select: none; }\\n .select2-container .select2-selection--single .select2-selection__rendered {\\n display: block;\\n padding-left: 8px;\\n padding-right: 20px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n .select2-container .select2-selection--single .select2-selection__clear {\\n position: relative; }\\n .select2-container[dir=\\\"rtl\\\"] .select2-selection--single .select2-selection__rendered {\\n padding-right: 8px;\\n padding-left: 20px; }\\n .select2-container .select2-selection--multiple {\\n box-sizing: border-box;\\n cursor: pointer;\\n display: block;\\n min-height: 32px;\\n user-select: none;\\n -webkit-user-select: none; }\\n .select2-container .select2-selection--multiple .select2-selection__rendered {\\n display: inline-block;\\n overflow: hidden;\\n padding-left: 8px;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n .select2-container .select2-search--inline {\\n float: left; }\\n .select2-container .select2-search--inline .select2-search__field {\\n box-sizing: border-box;\\n border: none;\\n font-size: 100%;\\n margin-top: 5px;\\n padding: 0; }\\n .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {\\n -webkit-appearance: none; }\\n\\n.select2-dropdown {\\n background-color: white;\\n border: 1px solid #aaa;\\n border-radius: 4px;\\n box-sizing: border-box;\\n display: block;\\n position: absolute;\\n left: -100000px;\\n width: 100%;\\n z-index: 1051; }\\n\\n.select2-results {\\n display: block; }\\n\\n.select2-results__options {\\n list-style: none;\\n margin: 0;\\n padding: 0; }\\n\\n.select2-results__option {\\n padding: 6px;\\n user-select: none;\\n -webkit-user-select: none; }\\n .select2-results__option[aria-selected] {\\n cursor: pointer; }\\n\\n.select2-container--open .select2-dropdown {\\n left: 0; }\\n\\n.select2-container--open .select2-dropdown--above {\\n border-bottom: none;\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0; }\\n\\n.select2-container--open .select2-dropdown--below {\\n border-top: none;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0; }\\n\\n.select2-search--dropdown {\\n display: block;\\n padding: 4px; }\\n .select2-search--dropdown .select2-search__field {\\n padding: 4px;\\n width: 100%;\\n box-sizing: border-box; }\\n .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {\\n -webkit-appearance: none; }\\n .select2-search--dropdown.select2-search--hide {\\n display: none; }\\n\\n.select2-close-mask {\\n border: 0;\\n margin: 0;\\n padding: 0;\\n display: block;\\n position: fixed;\\n left: 0;\\n top: 0;\\n min-height: 100%;\\n min-width: 100%;\\n height: auto;\\n width: auto;\\n opacity: 0;\\n z-index: 99;\\n background-color: #fff;\\n filter: alpha(opacity=0); }\\n\\n.select2-hidden-accessible {\\n border: 0 !important;\\n clip: rect(0 0 0 0) !important;\\n -webkit-clip-path: inset(50%) !important;\\n clip-path: inset(50%) !important;\\n height: 1px !important;\\n overflow: hidden !important;\\n padding: 0 !important;\\n position: absolute !important;\\n width: 1px !important;\\n white-space: nowrap !important; }\\n\\n.select2-container--default .select2-selection--single {\\n background-color: #fff;\\n border: 1px solid #aaa;\\n border-radius: 4px; }\\n .select2-container--default .select2-selection--single .select2-selection__rendered {\\n color: #444;\\n line-height: 28px; }\\n .select2-container--default .select2-selection--single .select2-selection__clear {\\n cursor: pointer;\\n float: right;\\n font-weight: bold; }\\n .select2-container--default .select2-selection--single .select2-selection__placeholder {\\n color: #999; }\\n .select2-container--default .select2-selection--single .select2-selection__arrow {\\n height: 26px;\\n position: absolute;\\n top: 1px;\\n right: 1px;\\n width: 20px; }\\n .select2-container--default .select2-selection--single .select2-selection__arrow b {\\n border-color: #888 transparent transparent transparent;\\n border-style: solid;\\n border-width: 5px 4px 0 4px;\\n height: 0;\\n left: 50%;\\n margin-left: -4px;\\n margin-top: -2px;\\n position: absolute;\\n top: 50%;\\n width: 0; }\\n\\n.select2-container--default[dir=\\\"rtl\\\"] .select2-selection--single .select2-selection__clear {\\n float: left; }\\n\\n.select2-container--default[dir=\\\"rtl\\\"] .select2-selection--single .select2-selection__arrow {\\n left: 1px;\\n right: auto; }\\n\\n.select2-container--default.select2-container--disabled .select2-selection--single {\\n background-color: #eee;\\n cursor: default; }\\n .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {\\n display: none; }\\n\\n.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {\\n border-color: transparent transparent #888 transparent;\\n border-width: 0 4px 5px 4px; }\\n\\n.select2-container--default .select2-selection--multiple {\\n background-color: white;\\n border: 1px solid #aaa;\\n border-radius: 4px;\\n cursor: text; }\\n .select2-container--default .select2-selection--multiple .select2-selection__rendered {\\n box-sizing: border-box;\\n list-style: none;\\n margin: 0;\\n padding: 0 5px;\\n width: 100%; }\\n .select2-container--default .select2-selection--multiple .select2-selection__rendered li {\\n list-style: none; }\\n .select2-container--default .select2-selection--multiple .select2-selection__clear {\\n cursor: pointer;\\n float: right;\\n font-weight: bold;\\n margin-top: 5px;\\n margin-right: 10px;\\n padding: 1px; }\\n .select2-container--default .select2-selection--multiple .select2-selection__choice {\\n background-color: #e4e4e4;\\n border: 1px solid #aaa;\\n border-radius: 4px;\\n cursor: default;\\n float: left;\\n margin-right: 5px;\\n margin-top: 5px;\\n padding: 0 5px; }\\n .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\\n color: #999;\\n cursor: pointer;\\n display: inline-block;\\n font-weight: bold;\\n margin-right: 2px; }\\n .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\\n color: #333; }\\n\\n.select2-container--default[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-search--inline {\\n float: right; }\\n\\n.select2-container--default[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-selection__choice {\\n margin-left: 5px;\\n margin-right: auto; }\\n\\n.select2-container--default[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-selection__choice__remove {\\n margin-left: 2px;\\n margin-right: auto; }\\n\\n.select2-container--default.select2-container--focus .select2-selection--multiple {\\n border: solid black 1px;\\n outline: 0; }\\n\\n.select2-container--default.select2-container--disabled .select2-selection--multiple {\\n background-color: #eee;\\n cursor: default; }\\n\\n.select2-container--default.select2-container--disabled .select2-selection__choice__remove {\\n display: none; }\\n\\n.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {\\n border-top-left-radius: 0;\\n border-top-right-radius: 0; }\\n\\n.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0; }\\n\\n.select2-container--default .select2-search--dropdown .select2-search__field {\\n border: 1px solid #aaa; }\\n\\n.select2-container--default .select2-search--inline .select2-search__field {\\n background: transparent;\\n border: none;\\n outline: 0;\\n box-shadow: none;\\n -webkit-appearance: textfield; }\\n\\n.select2-container--default .select2-results > .select2-results__options {\\n max-height: 200px;\\n overflow-y: auto; }\\n\\n.select2-container--default .select2-results__option[role=group] {\\n padding: 0; }\\n\\n.select2-container--default .select2-results__option[aria-disabled=true] {\\n color: #999; }\\n\\n.select2-container--default .select2-results__option[aria-selected=true] {\\n background-color: #ddd; }\\n\\n.select2-container--default .select2-results__option .select2-results__option {\\n padding-left: 1em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__group {\\n padding-left: 0; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -1em;\\n padding-left: 2em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -2em;\\n padding-left: 3em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -3em;\\n padding-left: 4em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -4em;\\n padding-left: 5em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -5em;\\n padding-left: 6em; }\\n\\n.select2-container--default .select2-results__option--highlighted[aria-selected] {\\n background-color: #5897fb;\\n color: white; }\\n\\n.select2-container--default .select2-results__group {\\n cursor: default;\\n display: block;\\n padding: 6px; }\\n\\n.select2-container--classic .select2-selection--single {\\n background-color: #f7f7f7;\\n border: 1px solid #aaa;\\n border-radius: 4px;\\n outline: 0;\\n background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);\\n background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);\\n background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);\\n background-repeat: repeat-x;\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }\\n .select2-container--classic .select2-selection--single:focus {\\n border: 1px solid #5897fb; }\\n .select2-container--classic .select2-selection--single .select2-selection__rendered {\\n color: #444;\\n line-height: 28px; }\\n .select2-container--classic .select2-selection--single .select2-selection__clear {\\n cursor: pointer;\\n float: right;\\n font-weight: bold;\\n margin-right: 10px; }\\n .select2-container--classic .select2-selection--single .select2-selection__placeholder {\\n color: #999; }\\n .select2-container--classic .select2-selection--single .select2-selection__arrow {\\n background-color: #ddd;\\n border: none;\\n border-left: 1px solid #aaa;\\n border-top-right-radius: 4px;\\n border-bottom-right-radius: 4px;\\n height: 26px;\\n position: absolute;\\n top: 1px;\\n right: 1px;\\n width: 20px;\\n background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);\\n background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);\\n background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);\\n background-repeat: repeat-x;\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }\\n .select2-container--classic .select2-selection--single .select2-selection__arrow b {\\n border-color: #888 transparent transparent transparent;\\n border-style: solid;\\n border-width: 5px 4px 0 4px;\\n height: 0;\\n left: 50%;\\n margin-left: -4px;\\n margin-top: -2px;\\n position: absolute;\\n top: 50%;\\n width: 0; }\\n\\n.select2-container--classic[dir=\\\"rtl\\\"] .select2-selection--single .select2-selection__clear {\\n float: left; }\\n\\n.select2-container--classic[dir=\\\"rtl\\\"] .select2-selection--single .select2-selection__arrow {\\n border: none;\\n border-right: 1px solid #aaa;\\n border-radius: 0;\\n border-top-left-radius: 4px;\\n border-bottom-left-radius: 4px;\\n left: 1px;\\n right: auto; }\\n\\n.select2-container--classic.select2-container--open .select2-selection--single {\\n border: 1px solid #5897fb; }\\n .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {\\n background: transparent;\\n border: none; }\\n .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {\\n border-color: transparent transparent #888 transparent;\\n border-width: 0 4px 5px 4px; }\\n\\n.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {\\n border-top: none;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0;\\n background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);\\n background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);\\n background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);\\n background-repeat: repeat-x;\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }\\n\\n.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {\\n border-bottom: none;\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0;\\n background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);\\n background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);\\n background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);\\n background-repeat: repeat-x;\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }\\n\\n.select2-container--classic .select2-selection--multiple {\\n background-color: white;\\n border: 1px solid #aaa;\\n border-radius: 4px;\\n cursor: text;\\n outline: 0; }\\n .select2-container--classic .select2-selection--multiple:focus {\\n border: 1px solid #5897fb; }\\n .select2-container--classic .select2-selection--multiple .select2-selection__rendered {\\n list-style: none;\\n margin: 0;\\n padding: 0 5px; }\\n .select2-container--classic .select2-selection--multiple .select2-selection__clear {\\n display: none; }\\n .select2-container--classic .select2-selection--multiple .select2-selection__choice {\\n background-color: #e4e4e4;\\n border: 1px solid #aaa;\\n border-radius: 4px;\\n cursor: default;\\n float: left;\\n margin-right: 5px;\\n margin-top: 5px;\\n padding: 0 5px; }\\n .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {\\n color: #888;\\n cursor: pointer;\\n display: inline-block;\\n font-weight: bold;\\n margin-right: 2px; }\\n .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {\\n color: #555; }\\n\\n.select2-container--classic[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-selection__choice {\\n float: right;\\n margin-left: 5px;\\n margin-right: auto; }\\n\\n.select2-container--classic[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-selection__choice__remove {\\n margin-left: 2px;\\n margin-right: auto; }\\n\\n.select2-container--classic.select2-container--open .select2-selection--multiple {\\n border: 1px solid #5897fb; }\\n\\n.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {\\n border-top: none;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0; }\\n\\n.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {\\n border-bottom: none;\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0; }\\n\\n.select2-container--classic .select2-search--dropdown .select2-search__field {\\n border: 1px solid #aaa;\\n outline: 0; }\\n\\n.select2-container--classic .select2-search--inline .select2-search__field {\\n outline: 0;\\n box-shadow: none; }\\n\\n.select2-container--classic .select2-dropdown {\\n background-color: white;\\n border: 1px solid transparent; }\\n\\n.select2-container--classic .select2-dropdown--above {\\n border-bottom: none; }\\n\\n.select2-container--classic .select2-dropdown--below {\\n border-top: none; }\\n\\n.select2-container--classic .select2-results > .select2-results__options {\\n max-height: 200px;\\n overflow-y: auto; }\\n\\n.select2-container--classic .select2-results__option[role=group] {\\n padding: 0; }\\n\\n.select2-container--classic .select2-results__option[aria-disabled=true] {\\n color: grey; }\\n\\n.select2-container--classic .select2-results__option--highlighted[aria-selected] {\\n background-color: #3875d7;\\n color: white; }\\n\\n.select2-container--classic .select2-results__group {\\n cursor: default;\\n display: block;\\n padding: 6px; }\\n\\n.select2-container--classic.select2-container--open .select2-dropdown {\\n border-color: #5897fb; }\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/select2/dist/css/select2.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\".select2-container {\\n box-sizing: border-box;\\n display: inline-block;\\n margin: 0;\\n position: relative;\\n vertical-align: middle; }\\n .select2-container .select2-selection--single {\\n box-sizing: border-box;\\n cursor: pointer;\\n display: block;\\n height: 28px;\\n user-select: none;\\n -webkit-user-select: none; }\\n .select2-container .select2-selection--single .select2-selection__rendered {\\n display: block;\\n padding-left: 8px;\\n padding-right: 20px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n .select2-container .select2-selection--single .select2-selection__clear {\\n position: relative; }\\n .select2-container[dir=\\\"rtl\\\"] .select2-selection--single .select2-selection__rendered {\\n padding-right: 8px;\\n padding-left: 20px; }\\n .select2-container .select2-selection--multiple {\\n box-sizing: border-box;\\n cursor: pointer;\\n display: block;\\n min-height: 32px;\\n user-select: none;\\n -webkit-user-select: none; }\\n .select2-container .select2-selection--multiple .select2-selection__rendered {\\n display: inline-block;\\n overflow: hidden;\\n padding-left: 8px;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n .select2-container .select2-search--inline {\\n float: left; }\\n .select2-container .select2-search--inline .select2-search__field {\\n box-sizing: border-box;\\n border: none;\\n font-size: 100%;\\n margin-top: 5px;\\n padding: 0; }\\n .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {\\n -webkit-appearance: none; }\\n\\n.select2-dropdown {\\n background-color: white;\\n border: 1px solid #aaa;\\n border-radius: 4px;\\n box-sizing: border-box;\\n display: block;\\n position: absolute;\\n left: -100000px;\\n width: 100%;\\n z-index: 1051; }\\n\\n.select2-results {\\n display: block; }\\n\\n.select2-results__options {\\n list-style: none;\\n margin: 0;\\n padding: 0; }\\n\\n.select2-results__option {\\n padding: 6px;\\n user-select: none;\\n -webkit-user-select: none; }\\n .select2-results__option[aria-selected] {\\n cursor: pointer; }\\n\\n.select2-container--open .select2-dropdown {\\n left: 0; }\\n\\n.select2-container--open .select2-dropdown--above {\\n border-bottom: none;\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0; }\\n\\n.select2-container--open .select2-dropdown--below {\\n border-top: none;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0; }\\n\\n.select2-search--dropdown {\\n display: block;\\n padding: 4px; }\\n .select2-search--dropdown .select2-search__field {\\n padding: 4px;\\n width: 100%;\\n box-sizing: border-box; }\\n .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {\\n -webkit-appearance: none; }\\n .select2-search--dropdown.select2-search--hide {\\n display: none; }\\n\\n.select2-close-mask {\\n border: 0;\\n margin: 0;\\n padding: 0;\\n display: block;\\n position: fixed;\\n left: 0;\\n top: 0;\\n min-height: 100%;\\n min-width: 100%;\\n height: auto;\\n width: auto;\\n opacity: 0;\\n z-index: 99;\\n background-color: #fff;\\n filter: alpha(opacity=0); }\\n\\n.select2-hidden-accessible {\\n border: 0 !important;\\n clip: rect(0 0 0 0) !important;\\n -webkit-clip-path: inset(50%) !important;\\n clip-path: inset(50%) !important;\\n height: 1px !important;\\n overflow: hidden !important;\\n padding: 0 !important;\\n position: absolute !important;\\n width: 1px !important;\\n white-space: nowrap !important; }\\n\\n.select2-container--default .select2-selection--single {\\n background-color: #fff;\\n border: 1px solid #aaa;\\n border-radius: 4px; }\\n .select2-container--default .select2-selection--single .select2-selection__rendered {\\n color: #444;\\n line-height: 28px; }\\n .select2-container--default .select2-selection--single .select2-selection__clear {\\n cursor: pointer;\\n float: right;\\n font-weight: bold; }\\n .select2-container--default .select2-selection--single .select2-selection__placeholder {\\n color: #999; }\\n .select2-container--default .select2-selection--single .select2-selection__arrow {\\n height: 26px;\\n position: absolute;\\n top: 1px;\\n right: 1px;\\n width: 20px; }\\n .select2-container--default .select2-selection--single .select2-selection__arrow b {\\n border-color: #888 transparent transparent transparent;\\n border-style: solid;\\n border-width: 5px 4px 0 4px;\\n height: 0;\\n left: 50%;\\n margin-left: -4px;\\n margin-top: -2px;\\n position: absolute;\\n top: 50%;\\n width: 0; }\\n\\n.select2-container--default[dir=\\\"rtl\\\"] .select2-selection--single .select2-selection__clear {\\n float: left; }\\n\\n.select2-container--default[dir=\\\"rtl\\\"] .select2-selection--single .select2-selection__arrow {\\n left: 1px;\\n right: auto; }\\n\\n.select2-container--default.select2-container--disabled .select2-selection--single {\\n background-color: #eee;\\n cursor: default; }\\n .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {\\n display: none; }\\n\\n.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {\\n border-color: transparent transparent #888 transparent;\\n border-width: 0 4px 5px 4px; }\\n\\n.select2-container--default .select2-selection--multiple {\\n background-color: white;\\n border: 1px solid #aaa;\\n border-radius: 4px;\\n cursor: text; }\\n .select2-container--default .select2-selection--multiple .select2-selection__rendered {\\n box-sizing: border-box;\\n list-style: none;\\n margin: 0;\\n padding: 0 5px;\\n width: 100%; }\\n .select2-container--default .select2-selection--multiple .select2-selection__rendered li {\\n list-style: none; }\\n .select2-container--default .select2-selection--multiple .select2-selection__clear {\\n cursor: pointer;\\n float: right;\\n font-weight: bold;\\n margin-top: 5px;\\n margin-right: 10px;\\n padding: 1px; }\\n .select2-container--default .select2-selection--multiple .select2-selection__choice {\\n background-color: #e4e4e4;\\n border: 1px solid #aaa;\\n border-radius: 4px;\\n cursor: default;\\n float: left;\\n margin-right: 5px;\\n margin-top: 5px;\\n padding: 0 5px; }\\n .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\\n color: #999;\\n cursor: pointer;\\n display: inline-block;\\n font-weight: bold;\\n margin-right: 2px; }\\n .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\\n color: #333; }\\n\\n.select2-container--default[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-search--inline {\\n float: right; }\\n\\n.select2-container--default[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-selection__choice {\\n margin-left: 5px;\\n margin-right: auto; }\\n\\n.select2-container--default[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-selection__choice__remove {\\n margin-left: 2px;\\n margin-right: auto; }\\n\\n.select2-container--default.select2-container--focus .select2-selection--multiple {\\n border: solid black 1px;\\n outline: 0; }\\n\\n.select2-container--default.select2-container--disabled .select2-selection--multiple {\\n background-color: #eee;\\n cursor: default; }\\n\\n.select2-container--default.select2-container--disabled .select2-selection__choice__remove {\\n display: none; }\\n\\n.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {\\n border-top-left-radius: 0;\\n border-top-right-radius: 0; }\\n\\n.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0; }\\n\\n.select2-container--default .select2-search--dropdown .select2-search__field {\\n border: 1px solid #aaa; }\\n\\n.select2-container--default .select2-search--inline .select2-search__field {\\n background: transparent;\\n border: none;\\n outline: 0;\\n box-shadow: none;\\n -webkit-appearance: textfield; }\\n\\n.select2-container--default .select2-results > .select2-results__options {\\n max-height: 200px;\\n overflow-y: auto; }\\n\\n.select2-container--default .select2-results__option[role=group] {\\n padding: 0; }\\n\\n.select2-container--default .select2-results__option[aria-disabled=true] {\\n color: #999; }\\n\\n.select2-container--default .select2-results__option[aria-selected=true] {\\n background-color: #ddd; }\\n\\n.select2-container--default .select2-results__option .select2-results__option {\\n padding-left: 1em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__group {\\n padding-left: 0; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -1em;\\n padding-left: 2em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -2em;\\n padding-left: 3em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -3em;\\n padding-left: 4em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -4em;\\n padding-left: 5em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -5em;\\n padding-left: 6em; }\\n\\n.select2-container--default .select2-results__option--highlighted[aria-selected] {\\n background-color: #5897fb;\\n color: white; }\\n\\n.select2-container--default .select2-results__group {\\n cursor: default;\\n display: block;\\n padding: 6px; }\\n\\n.select2-container--classic .select2-selection--single {\\n background-color: #f7f7f7;\\n border: 1px solid #aaa;\\n border-radius: 4px;\\n outline: 0;\\n background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);\\n background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);\\n background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);\\n background-repeat: repeat-x;\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }\\n .select2-container--classic .select2-selection--single:focus {\\n border: 1px solid #5897fb; }\\n .select2-container--classic .select2-selection--single .select2-selection__rendered {\\n color: #444;\\n line-height: 28px; }\\n .select2-container--classic .select2-selection--single .select2-selection__clear {\\n cursor: pointer;\\n float: right;\\n font-weight: bold;\\n margin-right: 10px; }\\n .select2-container--classic .select2-selection--single .select2-selection__placeholder {\\n color: #999; }\\n .select2-container--classic .select2-selection--single .select2-selection__arrow {\\n background-color: #ddd;\\n border: none;\\n border-left: 1px solid #aaa;\\n border-top-right-radius: 4px;\\n border-bottom-right-radius: 4px;\\n height: 26px;\\n position: absolute;\\n top: 1px;\\n right: 1px;\\n width: 20px;\\n background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);\\n background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);\\n background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);\\n background-repeat: repeat-x;\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }\\n .select2-container--classic .select2-selection--single .select2-selection__arrow b {\\n border-color: #888 transparent transparent transparent;\\n border-style: solid;\\n border-width: 5px 4px 0 4px;\\n height: 0;\\n left: 50%;\\n margin-left: -4px;\\n margin-top: -2px;\\n position: absolute;\\n top: 50%;\\n width: 0; }\\n\\n.select2-container--classic[dir=\\\"rtl\\\"] .select2-selection--single .select2-selection__clear {\\n float: left; }\\n\\n.select2-container--classic[dir=\\\"rtl\\\"] .select2-selection--single .select2-selection__arrow {\\n border: none;\\n border-right: 1px solid #aaa;\\n border-radius: 0;\\n border-top-left-radius: 4px;\\n border-bottom-left-radius: 4px;\\n left: 1px;\\n right: auto; }\\n\\n.select2-container--classic.select2-container--open .select2-selection--single {\\n border: 1px solid #5897fb; }\\n .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {\\n background: transparent;\\n border: none; }\\n .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {\\n border-color: transparent transparent #888 transparent;\\n border-width: 0 4px 5px 4px; }\\n\\n.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {\\n border-top: none;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0;\\n background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);\\n background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);\\n background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);\\n background-repeat: repeat-x;\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }\\n\\n.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {\\n border-bottom: none;\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0;\\n background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);\\n background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);\\n background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);\\n background-repeat: repeat-x;\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }\\n\\n.select2-container--classic .select2-selection--multiple {\\n background-color: white;\\n border: 1px solid #aaa;\\n border-radius: 4px;\\n cursor: text;\\n outline: 0; }\\n .select2-container--classic .select2-selection--multiple:focus {\\n border: 1px solid #5897fb; }\\n .select2-container--classic .select2-selection--multiple .select2-selection__rendered {\\n list-style: none;\\n margin: 0;\\n padding: 0 5px; }\\n .select2-container--classic .select2-selection--multiple .select2-selection__clear {\\n display: none; }\\n .select2-container--classic .select2-selection--multiple .select2-selection__choice {\\n background-color: #e4e4e4;\\n border: 1px solid #aaa;\\n border-radius: 4px;\\n cursor: default;\\n float: left;\\n margin-right: 5px;\\n margin-top: 5px;\\n padding: 0 5px; }\\n .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {\\n color: #888;\\n cursor: pointer;\\n display: inline-block;\\n font-weight: bold;\\n margin-right: 2px; }\\n .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {\\n color: #555; }\\n\\n.select2-container--classic[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-selection__choice {\\n float: right;\\n margin-left: 5px;\\n margin-right: auto; }\\n\\n.select2-container--classic[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-selection__choice__remove {\\n margin-left: 2px;\\n margin-right: auto; }\\n\\n.select2-container--classic.select2-container--open .select2-selection--multiple {\\n border: 1px solid #5897fb; }\\n\\n.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {\\n border-top: none;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0; }\\n\\n.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {\\n border-bottom: none;\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0; }\\n\\n.select2-container--classic .select2-search--dropdown .select2-search__field {\\n border: 1px solid #aaa;\\n outline: 0; }\\n\\n.select2-container--classic .select2-search--inline .select2-search__field {\\n outline: 0;\\n box-shadow: none; }\\n\\n.select2-container--classic .select2-dropdown {\\n background-color: white;\\n border: 1px solid transparent; }\\n\\n.select2-container--classic .select2-dropdown--above {\\n border-bottom: none; }\\n\\n.select2-container--classic .select2-dropdown--below {\\n border-top: none; }\\n\\n.select2-container--classic .select2-results > .select2-results__options {\\n max-height: 200px;\\n overflow-y: auto; }\\n\\n.select2-container--classic .select2-results__option[role=group] {\\n padding: 0; }\\n\\n.select2-container--classic .select2-results__option[aria-disabled=true] {\\n color: grey; }\\n\\n.select2-container--classic .select2-results__option--highlighted[aria-selected] {\\n background-color: #3875d7;\\n color: white; }\\n\\n.select2-container--classic .select2-results__group {\\n cursor: default;\\n display: block;\\n padding: 6px; }\\n\\n.select2-container--classic.select2-container--open .select2-dropdown {\\n border-color: #5897fb; }\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/*!\n * Select2 4.0.13\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = function (root, jQuery) {\n if (jQuery === undefined) {\n // require('jQuery') returns a factory that requires window to\n // build a jQuery instance, we normalize how we use modules\n // that require this pattern but the window provided is a noop\n // if it's defined (how jquery works)\n if (typeof window !== 'undefined') {\n jQuery = require('jquery');\n }\n else {\n jQuery = require('jquery')(root);\n }\n }\n factory(jQuery);\n return jQuery;\n };\n } else {\n // Browser globals\n factory(jQuery);\n }\n} (function (jQuery) {\n // This is needed so we can catch the AMD loader configuration and use it\n // The inner file should be wrapped (by `banner.start.js`) in a function that\n // returns the AMD loader references.\n var S2 =(function () {\n // Restore the Select2 AMD loader so it can be used\n // Needed mostly in the language files, where the loader is not inserted\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n var S2 = jQuery.fn.select2.amd;\n }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n var main, req, makeMap, handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n function normalize(name, baseName) {\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = (map && map['*']) || {};\n\n //Adjust any relative paths.\n if (name) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // If wanting node ID compatibility, strip .js from end\n // of IDs. Have to do this here, and not in nameToUrl\n // because node allows either .js or non .js to map\n // to same file.\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n // Starts with a '.' so need the baseName\n if (name[0].charAt(0) === '.' && baseParts) {\n //Convert baseName to array, and lop off the last part,\n //so that . matches that 'directory' and not name of the baseName's\n //module. For instance, baseName of 'one/two/three', maps to\n //'one/two/three.js', but we want the directory, 'one/two' for\n //this normalization.\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n name = normalizedBaseParts.concat(name);\n }\n\n //start trimDots\n for (i = 0; i < name.length; i++) {\n part = name[i];\n if (part === '.') {\n name.splice(i, 1);\n i -= 1;\n } else if (part === '..') {\n // If at the start, or previous value is still ..,\n // keep them so that when converted to a path it may\n // still work when converted to a path, even though\n // as an ID it is less than ideal. In larger point\n // releases, may be better to just kick out an error.\n if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n continue;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n //end trimDots\n\n name = name.join('/');\n }\n\n //Apply map config if available.\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')];\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n\n if (foundMap) {\n break;\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\n\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0);\n\n //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n return req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n return defined[name];\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n //Creates a parts array for a relName where first part is plugin ID,\n //second part is resource ID. Assumes relName has already been normalized.\n function makeRelParts(relName) {\n return relName ? splitPrefix(relName) : [];\n }\n\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n makeMap = function (name, relParts) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0],\n relResourceName = relParts[1];\n\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relResourceName);\n plugin = callDep(prefix);\n }\n\n //Normalize according\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relResourceName));\n } else {\n name = normalize(name, relResourceName);\n }\n } else {\n name = normalize(name, relResourceName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n if (prefix) {\n plugin = callDep(prefix);\n }\n }\n\n //Using ridiculous property names for space reasons\n return {\n f: prefix ? prefix + '!' + name : name, //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return (config && config.config && config.config[name]) || {};\n };\n }\n\n handlers = {\n require: function (name) {\n return makeRequire(name);\n },\n exports: function (name) {\n var e = defined[name];\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return (defined[name] = {});\n }\n },\n module: function (name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function (name, deps, callback, relName) {\n var cjsModule, depName, ret, map, i, relParts,\n args = [],\n callbackType = typeof callback,\n usingExports;\n\n //Use name if no relName\n relName = relName || name;\n relParts = makeRelParts(relName);\n\n //Call the callback to define the module, if necessary.\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relParts);\n depName = map.f;\n\n //Fast path CommonJS standard dependencies.\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) ||\n hasProp(waiting, depName) ||\n hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef &&\n cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n }\n //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n return callDep(makeMap(deps, makeRelParts(callback)).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n if (config.deps) {\n req(config.deps, config.callback);\n }\n if (!callback) {\n return;\n }\n\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n }\n\n //Support require(['a'])\n callback = callback || function () {};\n\n //If relName is a function, it is an errback handler,\n //so remove it.\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n }\n\n //Simulate async callback;\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n\n return req;\n };\n\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n req.config = function (cfg) {\n return req(cfg);\n };\n\n /**\n * Expose module registry for debugging and tooling\n */\n requirejs._defined = defined;\n\n define = function (name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n }\n\n //This module may not have dependencies\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n var _$ = jQuery || $;\n\n if (_$ == null && console && console.error) {\n console.error(\n 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n 'found. Make sure that you are including jQuery before Select2 on your ' +\n 'web page.'\n );\n }\n\n return _$;\n});\n\nS2.define('select2/utils',[\n 'jquery'\n], function ($) {\n var Utils = {};\n\n Utils.Extend = function (ChildClass, SuperClass) {\n var __hasProp = {}.hasOwnProperty;\n\n function BaseConstructor () {\n this.constructor = ChildClass;\n }\n\n for (var key in SuperClass) {\n if (__hasProp.call(SuperClass, key)) {\n ChildClass[key] = SuperClass[key];\n }\n }\n\n BaseConstructor.prototype = SuperClass.prototype;\n ChildClass.prototype = new BaseConstructor();\n ChildClass.__super__ = SuperClass.prototype;\n\n return ChildClass;\n };\n\n function getMethods (theClass) {\n var proto = theClass.prototype;\n\n var methods = [];\n\n for (var methodName in proto) {\n var m = proto[methodName];\n\n if (typeof m !== 'function') {\n continue;\n }\n\n if (methodName === 'constructor') {\n continue;\n }\n\n methods.push(methodName);\n }\n\n return methods;\n }\n\n Utils.Decorate = function (SuperClass, DecoratorClass) {\n var decoratedMethods = getMethods(DecoratorClass);\n var superMethods = getMethods(SuperClass);\n\n function DecoratedClass () {\n var unshift = Array.prototype.unshift;\n\n var argCount = DecoratorClass.prototype.constructor.length;\n\n var calledConstructor = SuperClass.prototype.constructor;\n\n if (argCount > 0) {\n unshift.call(arguments, SuperClass.prototype.constructor);\n\n calledConstructor = DecoratorClass.prototype.constructor;\n }\n\n calledConstructor.apply(this, arguments);\n }\n\n DecoratorClass.displayName = SuperClass.displayName;\n\n function ctr () {\n this.constructor = DecoratedClass;\n }\n\n DecoratedClass.prototype = new ctr();\n\n for (var m = 0; m < superMethods.length; m++) {\n var superMethod = superMethods[m];\n\n DecoratedClass.prototype[superMethod] =\n SuperClass.prototype[superMethod];\n }\n\n var calledMethod = function (methodName) {\n // Stub out the original method if it's not decorating an actual method\n var originalMethod = function () {};\n\n if (methodName in DecoratedClass.prototype) {\n originalMethod = DecoratedClass.prototype[methodName];\n }\n\n var decoratedMethod = DecoratorClass.prototype[methodName];\n\n return function () {\n var unshift = Array.prototype.unshift;\n\n unshift.call(arguments, originalMethod);\n\n return decoratedMethod.apply(this, arguments);\n };\n };\n\n for (var d = 0; d < decoratedMethods.length; d++) {\n var decoratedMethod = decoratedMethods[d];\n\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n }\n\n return DecoratedClass;\n };\n\n var Observable = function () {\n this.listeners = {};\n };\n\n Observable.prototype.on = function (event, callback) {\n this.listeners = this.listeners || {};\n\n if (event in this.listeners) {\n this.listeners[event].push(callback);\n } else {\n this.listeners[event] = [callback];\n }\n };\n\n Observable.prototype.trigger = function (event) {\n var slice = Array.prototype.slice;\n var params = slice.call(arguments, 1);\n\n this.listeners = this.listeners || {};\n\n // Params should always come in as an array\n if (params == null) {\n params = [];\n }\n\n // If there are no arguments to the event, use a temporary object\n if (params.length === 0) {\n params.push({});\n }\n\n // Set the `_type` of the first object to the event\n params[0]._type = event;\n\n if (event in this.listeners) {\n this.invoke(this.listeners[event], slice.call(arguments, 1));\n }\n\n if ('*' in this.listeners) {\n this.invoke(this.listeners['*'], arguments);\n }\n };\n\n Observable.prototype.invoke = function (listeners, params) {\n for (var i = 0, len = listeners.length; i < len; i++) {\n listeners[i].apply(this, params);\n }\n };\n\n Utils.Observable = Observable;\n\n Utils.generateChars = function (length) {\n var chars = '';\n\n for (var i = 0; i < length; i++) {\n var randomChar = Math.floor(Math.random() * 36);\n chars += randomChar.toString(36);\n }\n\n return chars;\n };\n\n Utils.bind = function (func, context) {\n return function () {\n func.apply(context, arguments);\n };\n };\n\n Utils._convertData = function (data) {\n for (var originalKey in data) {\n var keys = originalKey.split('-');\n\n var dataLevel = data;\n\n if (keys.length === 1) {\n continue;\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k];\n\n // Lowercase the first letter\n // By default, dash-separated becomes camelCase\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n if (!(key in dataLevel)) {\n dataLevel[key] = {};\n }\n\n if (k == keys.length - 1) {\n dataLevel[key] = data[originalKey];\n }\n\n dataLevel = dataLevel[key];\n }\n\n delete data[originalKey];\n }\n\n return data;\n };\n\n Utils.hasScroll = function (index, el) {\n // Adapted from the function created by @ShadowScripter\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\n // The original code can be found at\n // http://codereview.stackexchange.com/q/13338\n // and was designed to be used with the Sizzle selector engine.\n\n var $el = $(el);\n var overflowX = el.style.overflowX;\n var overflowY = el.style.overflowY;\n\n //Check both x and y declarations\n if (overflowX === overflowY &&\n (overflowY === 'hidden' || overflowY === 'visible')) {\n return false;\n }\n\n if (overflowX === 'scroll' || overflowY === 'scroll') {\n return true;\n }\n\n return ($el.innerHeight() < el.scrollHeight ||\n $el.innerWidth() < el.scrollWidth);\n };\n\n Utils.escapeMarkup = function (markup) {\n var replaceMap = {\n '\\\\': '\',\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '/': '/'\n };\n\n // Do not try to escape the markup if it's not a string\n if (typeof markup !== 'string') {\n return markup;\n }\n\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n return replaceMap[match];\n });\n };\n\n // 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\n $.map($nodes, function (node) {\n $jqNodes = $jqNodes.add(node);\n });\n\n $nodes = $jqNodes;\n }\n\n $element.append($nodes);\n };\n\n // Cache objects in Utils.__cache instead of $.data (see #4346)\n Utils.__cache = {};\n\n var id = 0;\n Utils.GetUniqueElementId = function (element) {\n // Get a unique element Id. If element has no id,\n // creates a new unique number, stores it in the id\n // attribute and returns the new id.\n // If an id already exists, it simply returns it.\n\n var select2Id = element.getAttribute('data-select2-id');\n if (select2Id == null) {\n // If element has id, use it.\n if (element.id) {\n select2Id = element.id;\n element.setAttribute('data-select2-id', select2Id);\n } else {\n element.setAttribute('data-select2-id', ++id);\n select2Id = id.toString();\n }\n }\n return select2Id;\n };\n\n Utils.StoreData = function (element, name, value) {\n // Stores an item in the cache for a specified element.\n // name is the cache key.\n var id = Utils.GetUniqueElementId(element);\n if (!Utils.__cache[id]) {\n Utils.__cache[id] = {};\n }\n\n Utils.__cache[id][name] = value;\n };\n\n Utils.GetData = function (element, name) {\n // Retrieves a value from the cache by its key (name)\n // name is optional. If no name specified, return\n // all cache items for the specified element.\n // and for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (name) {\n if (Utils.__cache[id]) {\n if (Utils.__cache[id][name] != null) {\n return Utils.__cache[id][name];\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n } else {\n return Utils.__cache[id];\n }\n };\n\n Utils.RemoveData = function (element) {\n // Removes all cached items for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (Utils.__cache[id] != null) {\n delete Utils.__cache[id];\n }\n\n element.removeAttribute('data-select2-id');\n };\n\n return Utils;\n});\n\nS2.define('select2/results',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Results ($element, options, dataAdapter) {\n this.$element = $element;\n this.data = dataAdapter;\n this.options = options;\n\n Results.__super__.constructor.call(this);\n }\n\n Utils.Extend(Results, Utils.Observable);\n\n Results.prototype.render = function () {\n var $results = $(\n ''\n );\n\n if (this.options.get('multiple')) {\n $results.attr('aria-multiselectable', 'true');\n }\n\n this.$results = $results;\n\n return $results;\n };\n\n Results.prototype.clear = function () {\n this.$results.empty();\n };\n\n Results.prototype.displayMessage = function (params) {\n var escapeMarkup = this.options.get('escapeMarkup');\n\n this.clear();\n this.hideLoading();\n\n var $message = $(\n '
  • '\n );\n\n var message = this.options.get('translations').get(params.message);\n\n $message.append(\n escapeMarkup(\n message(params.args)\n )\n );\n\n $message[0].className += ' select2-results__message';\n\n this.$results.append($message);\n };\n\n Results.prototype.hideMessages = function () {\n this.$results.find('.select2-results__message').remove();\n };\n\n Results.prototype.append = function (data) {\n this.hideLoading();\n\n var $options = [];\n\n if (data.results == null || data.results.length === 0) {\n if (this.$results.children().length === 0) {\n this.trigger('results:message', {\n message: 'noResults'\n });\n }\n\n return;\n }\n\n data.results = this.sort(data.results);\n\n for (var d = 0; d < data.results.length; d++) {\n var item = data.results[d];\n\n var $option = this.option(item);\n\n $options.push($option);\n }\n\n this.$results.append($options);\n };\n\n Results.prototype.position = function ($results, $dropdown) {\n var $resultsContainer = $dropdown.find('.select2-results');\n $resultsContainer.append($results);\n };\n\n Results.prototype.sort = function (data) {\n var sorter = this.options.get('sorter');\n\n return sorter(data);\n };\n\n Results.prototype.highlightFirstItem = function () {\n var $options = this.$results\n .find('.select2-results__option[aria-selected]');\n\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\n this.ensureHighlightVisible();\n };\n\n Results.prototype.setClasses = function () {\n var self = this;\n\n this.data.current(function (selected) {\n var selectedIds = $.map(selected, function (s) {\n return s.id.toString();\n });\n\n var $options = self.$results\n .find('.select2-results__option[aria-selected]');\n\n $options.each(function () {\n var $option = $(this);\n\n var item = Utils.GetData(this, 'data');\n\n // id needs to be converted to a string when comparing\n var id = '' + item.id;\n\n if ((item.element != null && item.element.selected) ||\n (item.element == null && $.inArray(id, selectedIds) > -1)) {\n $option.attr('aria-selected', 'true');\n } else {\n $option.attr('aria-selected', 'false');\n }\n });\n\n });\n };\n\n Results.prototype.showLoading = function (params) {\n this.hideLoading();\n\n var loadingMore = this.options.get('translations').get('searching');\n\n var loading = {\n disabled: true,\n loading: true,\n text: loadingMore(params)\n };\n var $loading = this.option(loading);\n $loading.className += ' loading-results';\n\n this.$results.prepend($loading);\n };\n\n Results.prototype.hideLoading = function () {\n this.$results.find('.loading-results').remove();\n };\n\n Results.prototype.option = function (data) {\n var option = document.createElement('li');\n option.className = 'select2-results__option';\n\n var attrs = {\n 'role': 'option',\n 'aria-selected': 'false'\n };\n\n var matches = window.Element.prototype.matches ||\n window.Element.prototype.msMatchesSelector ||\n window.Element.prototype.webkitMatchesSelector;\n\n if ((data.element != null && matches.call(data.element, ':disabled')) ||\n (data.element == null && data.disabled)) {\n delete attrs['aria-selected'];\n attrs['aria-disabled'] = 'true';\n }\n\n if (data.id == null) {\n delete attrs['aria-selected'];\n }\n\n if (data._resultId != null) {\n option.id = data._resultId;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n if (data.children) {\n attrs.role = 'group';\n attrs['aria-label'] = data.text;\n delete attrs['aria-selected'];\n }\n\n for (var attr in attrs) {\n var val = attrs[attr];\n\n option.setAttribute(attr, val);\n }\n\n if (data.children) {\n var $option = $(option);\n\n var label = document.createElement('strong');\n label.className = 'select2-results__group';\n\n var $label = $(label);\n this.template(data, label);\n\n var $children = [];\n\n for (var c = 0; c < data.children.length; c++) {\n var child = data.children[c];\n\n var $child = this.option(child);\n\n $children.push($child);\n }\n\n var $childrenContainer = $('', {\n 'class': 'select2-results__options select2-results__options--nested'\n });\n\n $childrenContainer.append($children);\n\n $option.append(label);\n $option.append($childrenContainer);\n } else {\n this.template(data, option);\n }\n\n Utils.StoreData(option, 'data', data);\n\n return option;\n };\n\n Results.prototype.bind = function (container, $container) {\n var self = this;\n\n var id = container.id + '-results';\n\n this.$results.attr('id', id);\n\n container.on('results:all', function (params) {\n self.clear();\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n self.highlightFirstItem();\n }\n });\n\n container.on('results:append', function (params) {\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n }\n });\n\n container.on('query', function (params) {\n self.hideMessages();\n self.showLoading(params);\n });\n\n container.on('select', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('unselect', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expended=\"true\"\n self.$results.attr('aria-expanded', 'true');\n self.$results.attr('aria-hidden', 'false');\n\n self.setClasses();\n self.ensureHighlightVisible();\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expended=\"false\"\n self.$results.attr('aria-expanded', 'false');\n self.$results.attr('aria-hidden', 'true');\n self.$results.removeAttr('aria-activedescendant');\n });\n\n container.on('results:toggle', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n $highlighted.trigger('mouseup');\n });\n\n container.on('results:select', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var data = Utils.GetData($highlighted[0], 'data');\n\n if ($highlighted.attr('aria-selected') == 'true') {\n self.trigger('close', {});\n } else {\n self.trigger('select', {\n data: data\n });\n }\n });\n\n container.on('results:previous', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('[aria-selected]');\n\n var currentIndex = $options.index($highlighted);\n\n // If we are already at the top, don't move further\n // If no options, currentIndex will be -1\n if (currentIndex <= 0) {\n return;\n }\n\n var nextIndex = currentIndex - 1;\n\n // If none are highlighted, highlight the first\n if ($highlighted.length === 0) {\n nextIndex = 0;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top;\n var nextTop = $next.offset().top;\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextTop - currentOffset < 0) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:next', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('[aria-selected]');\n\n var currentIndex = $options.index($highlighted);\n\n var nextIndex = currentIndex + 1;\n\n // If we are at the last option, stay there\n if (nextIndex >= $options.length) {\n return;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top +\n self.$results.outerHeight(false);\n var nextBottom = $next.offset().top + $next.outerHeight(false);\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextBottom > currentOffset) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:focus', function (params) {\n params.element.addClass('select2-results__option--highlighted');\n });\n\n container.on('results:message', function (params) {\n self.displayMessage(params);\n });\n\n if ($.fn.mousewheel) {\n this.$results.on('mousewheel', function (e) {\n var top = self.$results.scrollTop();\n\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n if (isAtTop) {\n self.$results.scrollTop(0);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (isAtBottom) {\n self.$results.scrollTop(\n self.$results.get(0).scrollHeight - self.$results.height()\n );\n\n e.preventDefault();\n e.stopPropagation();\n }\n });\n }\n\n this.$results.on('mouseup', '.select2-results__option[aria-selected]',\n function (evt) {\n var $this = $(this);\n\n var data = Utils.GetData(this, 'data');\n\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\n return;\n }\n\n self.trigger('select', {\n originalEvent: evt,\n data: data\n });\n });\n\n this.$results.on('mouseenter', '.select2-results__option[aria-selected]',\n function (evt) {\n var data = Utils.GetData(this, 'data');\n\n self.getHighlightedResults()\n .removeClass('select2-results__option--highlighted');\n\n self.trigger('results:focus', {\n data: data,\n element: $(this)\n });\n });\n };\n\n Results.prototype.getHighlightedResults = function () {\n var $highlighted = this.$results\n .find('.select2-results__option--highlighted');\n\n return $highlighted;\n };\n\n Results.prototype.destroy = function () {\n this.$results.remove();\n };\n\n Results.prototype.ensureHighlightVisible = function () {\n var $highlighted = this.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var $options = this.$results.find('[aria-selected]');\n\n var currentIndex = $options.index($highlighted);\n\n var currentOffset = this.$results.offset().top;\n var nextTop = $highlighted.offset().top;\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n var offsetDelta = nextTop - currentOffset;\n nextOffset -= $highlighted.outerHeight(false) * 2;\n\n if (currentIndex <= 2) {\n this.$results.scrollTop(0);\n } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n this.$results.scrollTop(nextOffset);\n }\n };\n\n Results.prototype.template = function (result, container) {\n var template = this.options.get('templateResult');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n var content = template(result, container);\n\n if (content == null) {\n container.style.display = 'none';\n } else if (typeof content === 'string') {\n container.innerHTML = escapeMarkup(content);\n } else {\n $(container).append(content);\n }\n };\n\n return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n var KEYS = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n };\n\n return KEYS;\n});\n\nS2.define('select2/selection/base',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function BaseSelection ($element, options) {\n this.$element = $element;\n this.options = options;\n\n BaseSelection.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseSelection, Utils.Observable);\n\n BaseSelection.prototype.render = function () {\n var $selection = $(\n '' +\n ''\n );\n\n this._tabindex = 0;\n\n if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n } else if (this.$element.attr('tabindex') != null) {\n this._tabindex = this.$element.attr('tabindex');\n }\n\n $selection.attr('title', this.$element.attr('title'));\n $selection.attr('tabindex', this._tabindex);\n $selection.attr('aria-disabled', 'false');\n\n this.$selection = $selection;\n\n return $selection;\n };\n\n BaseSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n this.container = container;\n\n this.$selection.on('focus', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('blur', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n if (evt.which === KEYS.SPACE) {\n evt.preventDefault();\n }\n });\n\n container.on('results:focus', function (params) {\n self.$selection.attr('aria-activedescendant', params.data._resultId);\n });\n\n container.on('selection:update', function (params) {\n self.update(params.data);\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expanded=\"true\"\n self.$selection.attr('aria-expanded', 'true');\n self.$selection.attr('aria-owns', resultsId);\n\n self._attachCloseHandler(container);\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expanded=\"false\"\n self.$selection.attr('aria-expanded', 'false');\n self.$selection.removeAttr('aria-activedescendant');\n self.$selection.removeAttr('aria-owns');\n\n self.$selection.trigger('focus');\n\n self._detachCloseHandler(container);\n });\n\n container.on('enable', function () {\n self.$selection.attr('tabindex', self._tabindex);\n self.$selection.attr('aria-disabled', 'false');\n });\n\n container.on('disable', function () {\n self.$selection.attr('tabindex', '-1');\n self.$selection.attr('aria-disabled', 'true');\n });\n };\n\n BaseSelection.prototype._handleBlur = function (evt) {\n var self = this;\n\n // This needs to be delayed as the active element is the body when the tab\n // key is pressed, possibly along with others.\n window.setTimeout(function () {\n // Don't trigger `blur` if the focus is still in the selection\n if (\n (document.activeElement == self.$selection[0]) ||\n ($.contains(self.$selection[0], document.activeElement))\n ) {\n return;\n }\n\n self.trigger('blur', evt);\n }, 1);\n };\n\n BaseSelection.prototype._attachCloseHandler = function (container) {\n\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\n var $target = $(e.target);\n\n var $select = $target.closest('.select2');\n\n var $all = $('.select2.select2-container--open');\n\n $all.each(function () {\n if (this == $select[0]) {\n return;\n }\n\n var $element = Utils.GetData(this, 'element');\n\n $element.select2('close');\n });\n });\n };\n\n BaseSelection.prototype._detachCloseHandler = function (container) {\n $(document.body).off('mousedown.select2.' + container.id);\n };\n\n BaseSelection.prototype.position = function ($selection, $container) {\n var $selectionContainer = $container.find('.selection');\n $selectionContainer.append($selection);\n };\n\n BaseSelection.prototype.destroy = function () {\n this._detachCloseHandler(this.container);\n };\n\n BaseSelection.prototype.update = function (data) {\n throw new Error('The `update` method must be defined in child classes.');\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n BaseSelection.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n BaseSelection.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n 'jquery',\n './base',\n '../utils',\n '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n function SingleSelection () {\n SingleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(SingleSelection, BaseSelection);\n\n SingleSelection.prototype.render = function () {\n var $selection = SingleSelection.__super__.render.call(this);\n\n $selection.addClass('select2-selection--single');\n\n $selection.html(\n '' +\n '' +\n '' +\n ''\n );\n\n return $selection;\n };\n\n SingleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n SingleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n\n this.$selection.find('.select2-selection__rendered')\n .attr('id', id)\n .attr('role', 'textbox')\n .attr('aria-readonly', 'true');\n this.$selection.attr('aria-labelledby', id);\n\n this.$selection.on('mousedown', function (evt) {\n // Only respond to left clicks\n if (evt.which !== 1) {\n return;\n }\n\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on('focus', function (evt) {\n // User focuses on the container\n });\n\n this.$selection.on('blur', function (evt) {\n // User exits the container\n });\n\n container.on('focus', function (evt) {\n if (!container.isOpen()) {\n self.$selection.trigger('focus');\n }\n });\n };\n\n SingleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title'); // clear tooltip on empty\n };\n\n SingleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n SingleSelection.prototype.selectionContainer = function () {\n return $('');\n };\n\n SingleSelection.prototype.update = function (data) {\n if (data.length === 0) {\n this.clear();\n return;\n }\n\n var selection = data[0];\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n var formatted = this.display(selection, $rendered);\n\n $rendered.empty().append(formatted);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $rendered.attr('title', title);\n } else {\n $rendered.removeAttr('title');\n }\n };\n\n return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n 'jquery',\n './base',\n '../utils'\n], function ($, BaseSelection, Utils) {\n function MultipleSelection ($element, options) {\n MultipleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(MultipleSelection, BaseSelection);\n\n MultipleSelection.prototype.render = function () {\n var $selection = MultipleSelection.__super__.render.call(this);\n\n $selection.addClass('select2-selection--multiple');\n\n $selection.html(\n ''\n );\n\n return $selection;\n };\n\n MultipleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n MultipleSelection.__super__.bind.apply(this, arguments);\n\n this.$selection.on('click', function (evt) {\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on(\n 'click',\n '.select2-selection__choice__remove',\n function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n var $remove = $(this);\n var $selection = $remove.parent();\n\n var data = Utils.GetData($selection[0], 'data');\n\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n }\n );\n };\n\n MultipleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title');\n };\n\n MultipleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n MultipleSelection.prototype.selectionContainer = function () {\n var $container = $(\n '
  • ' +\n '' +\n '×' +\n '' +\n '
  • '\n );\n\n return $container;\n };\n\n MultipleSelection.prototype.update = function (data) {\n this.clear();\n\n if (data.length === 0) {\n return;\n }\n\n var $selections = [];\n\n for (var d = 0; d < data.length; d++) {\n var selection = data[d];\n\n var $selection = this.selectionContainer();\n var formatted = this.display(selection, $selection);\n\n $selection.append(formatted);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $selection.attr('title', title);\n }\n\n Utils.StoreData($selection[0], 'data', selection);\n\n $selections.push($selection);\n }\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n\n Utils.appendMany($rendered, $selections);\n };\n\n return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n '../utils'\n], function (Utils) {\n function Placeholder (decorated, $element, options) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options);\n }\n\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n var $placeholder = this.selectionContainer();\n\n $placeholder.html(this.display(placeholder));\n $placeholder.addClass('select2-selection__placeholder')\n .removeClass('select2-selection__choice');\n\n return $placeholder;\n };\n\n Placeholder.prototype.update = function (decorated, data) {\n var singlePlaceholder = (\n data.length == 1 && data[0].id != this.placeholder.id\n );\n var multipleSelections = data.length > 1;\n\n if (multipleSelections || singlePlaceholder) {\n return decorated.call(this, data);\n }\n\n this.clear();\n\n var $placeholder = this.createPlaceholder(this.placeholder);\n\n this.$selection.find('.select2-selection__rendered').append($placeholder);\n };\n\n return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n 'jquery',\n '../keys',\n '../utils'\n], function ($, KEYS, Utils) {\n function AllowClear () { }\n\n AllowClear.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n if (this.placeholder == null) {\n if (this.options.get('debug') && window.console && console.error) {\n console.error(\n 'Select2: The `allowClear` option should be used in combination ' +\n 'with the `placeholder` option.'\n );\n }\n }\n\n this.$selection.on('mousedown', '.select2-selection__clear',\n function (evt) {\n self._handleClear(evt);\n });\n\n container.on('keypress', function (evt) {\n self._handleKeyboardClear(evt, container);\n });\n };\n\n AllowClear.prototype._handleClear = function (_, evt) {\n // Ignore the event if it is disabled\n if (this.isDisabled()) {\n return;\n }\n\n var $clear = this.$selection.find('.select2-selection__clear');\n\n // Ignore the event if nothing has been selected\n if ($clear.length === 0) {\n return;\n }\n\n evt.stopPropagation();\n\n var data = Utils.GetData($clear[0], 'data');\n\n var previousVal = this.$element.val();\n this.$element.val(this.placeholder.id);\n\n var unselectData = {\n data: data\n };\n this.trigger('clear', unselectData);\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n\n for (var d = 0; d < data.length; d++) {\n unselectData = {\n data: data[d]\n };\n\n // Trigger the `unselect` event, so people can prevent it from being\n // cleared.\n this.trigger('unselect', unselectData);\n\n // If the event was prevented, don't clear it out.\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n }\n\n this.$element.trigger('input').trigger('change');\n\n this.trigger('toggle', {});\n };\n\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n if (container.isOpen()) {\n return;\n }\n\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n this._handleClear(evt);\n }\n };\n\n AllowClear.prototype.update = function (decorated, data) {\n decorated.call(this, data);\n\n if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n data.length === 0) {\n return;\n }\n\n var removeAll = this.options.get('translations').get('removeAllItems');\n\n var $remove = $(\n '' +\n '×' +\n ''\n );\n Utils.StoreData($remove[0], 'data', data);\n\n this.$selection.find('.select2-selection__rendered').prepend($remove);\n };\n\n return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function Search (decorated, $element, options) {\n decorated.call(this, $element, options);\n }\n\n Search.prototype.render = function (decorated) {\n var $search = $(\n ''\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n\n var $rendered = decorated.call(this);\n\n this._transferTabIndex();\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n decorated.call(this, container, $container);\n\n container.on('open', function () {\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n });\n\n container.on('close', function () {\n self.$search.val('');\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.trigger('focus');\n });\n\n container.on('enable', function () {\n self.$search.prop('disabled', false);\n\n self._transferTabIndex();\n });\n\n container.on('disable', function () {\n self.$search.prop('disabled', true);\n });\n\n container.on('focus', function (evt) {\n self.$search.trigger('focus');\n });\n\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n\n this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n evt.stopPropagation();\n\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n\n var key = evt.which;\n\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n var $previousChoice = self.$searchContainer\n .prev('.select2-selection__choice');\n\n if ($previousChoice.length > 0) {\n var item = Utils.GetData($previousChoice[0], 'data');\n\n self.searchRemoveChoice(item);\n\n evt.preventDefault();\n }\n }\n });\n\n this.$selection.on('click', '.select2-search--inline', function (evt) {\n if (self.$search.val()) {\n evt.stopPropagation();\n }\n });\n\n // Try to detect the IE version should the `documentMode` property that\n // is stored on the document. This is only implemented in IE and is\n // slightly cleaner than doing a user agent check.\n // This property is not available in Edge, but Edge also doesn't have\n // this bug.\n var msie = document.documentMode;\n var disableInputEvents = msie && msie <= 11;\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$selection.on(\n 'input.searchcheck',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents) {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n // Unbind the duplicated `keyup` event\n self.$selection.off('keyup.search');\n }\n );\n\n this.$selection.on(\n 'keyup.search input.search',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents && evt.type === 'input') {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n var key = evt.which;\n\n // We can freely ignore events from modifier keys\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n return;\n }\n\n // Tabbing will be handled during the `keydown` phase\n if (key == KEYS.TAB) {\n return;\n }\n\n self.handleSearch(evt);\n }\n );\n };\n\n /**\n * This method will transfer the tabindex attribute from the rendered\n * selection to the search box. This allows for the search box to be used as\n * the primary focus instead of the selection container.\n *\n * @private\n */\n Search.prototype._transferTabIndex = function (decorated) {\n this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n this.$selection.attr('tabindex', '-1');\n };\n\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\n this.$search.attr('placeholder', placeholder.text);\n };\n\n Search.prototype.update = function (decorated, data) {\n var searchHadFocus = this.$search[0] == document.activeElement;\n\n this.$search.attr('placeholder', '');\n\n decorated.call(this, data);\n\n this.$selection.find('.select2-selection__rendered')\n .append(this.$searchContainer);\n\n this.resizeSearch();\n if (searchHadFocus) {\n this.$search.trigger('focus');\n }\n };\n\n Search.prototype.handleSearch = function () {\n this.resizeSearch();\n\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.searchRemoveChoice = function (decorated, item) {\n this.trigger('unselect', {\n data: item\n });\n\n this.$search.val(item.text);\n this.handleSearch();\n };\n\n Search.prototype.resizeSearch = function () {\n this.$search.css('width', '25px');\n\n var width = '';\n\n if (this.$search.attr('placeholder') !== '') {\n width = this.$selection.find('.select2-selection__rendered').width();\n } else {\n var minimumWidth = this.$search.val().length + 1;\n\n width = (minimumWidth * 0.75) + 'em';\n }\n\n this.$search.css('width', width);\n };\n\n return Search;\n});\n\nS2.define('select2/selection/eventRelay',[\n 'jquery'\n], function ($) {\n function EventRelay () { }\n\n EventRelay.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var relayEvents = [\n 'open', 'opening',\n 'close', 'closing',\n 'select', 'selecting',\n 'unselect', 'unselecting',\n 'clear', 'clearing'\n ];\n\n var preventableEvents = [\n 'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n ];\n\n decorated.call(this, container, $container);\n\n container.on('*', function (name, params) {\n // Ignore events that should not be relayed\n if ($.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\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\n params.prevented = evt.isDefaultPrevented();\n });\n };\n\n return EventRelay;\n});\n\nS2.define('select2/translation',[\n 'jquery',\n 'require'\n], function ($, require) {\n function Translation (dict) {\n this.dict = dict || {};\n }\n\n Translation.prototype.all = function () {\n return this.dict;\n };\n\n Translation.prototype.get = function (key) {\n return this.dict[key];\n };\n\n Translation.prototype.extend = function (translation) {\n this.dict = $.extend({}, translation.all(), this.dict);\n };\n\n // Static functions\n\n Translation._cache = {};\n\n Translation.loadPath = function (path) {\n if (!(path in Translation._cache)) {\n var translations = require(path);\n\n Translation._cache[path] = translations;\n }\n\n return new Translation(Translation._cache[path]);\n };\n\n return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n var diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u0152': 'OE',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u0153': 'oe',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03CE': '\\u03C9',\n '\\u03C2': '\\u03C3',\n '\\u2019': '\\''\n };\n\n return diacritics;\n});\n\nS2.define('select2/data/base',[\n '../utils'\n], function (Utils) {\n function BaseAdapter ($element, options) {\n BaseAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseAdapter, Utils.Observable);\n\n BaseAdapter.prototype.current = function (callback) {\n throw new Error('The `current` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.query = function (params, callback) {\n throw new Error('The `query` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.bind = function (container, $container) {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.destroy = function () {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.generateResultId = function (container, data) {\n var id = container.id + '-result-';\n\n id += Utils.generateChars(4);\n\n if (data.id != null) {\n id += '-' + data.id.toString();\n } else {\n id += '-' + Utils.generateChars(4);\n }\n return id;\n };\n\n return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n './base',\n '../utils',\n 'jquery'\n], function (BaseAdapter, Utils, $) {\n function SelectAdapter ($element, options) {\n this.$element = $element;\n this.options = options;\n\n SelectAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(SelectAdapter, BaseAdapter);\n\n SelectAdapter.prototype.current = function (callback) {\n var data = [];\n var self = this;\n\n this.$element.find(':selected').each(function () {\n var $option = $(this);\n\n var option = self.item($option);\n\n data.push(option);\n });\n\n callback(data);\n };\n\n SelectAdapter.prototype.select = function (data) {\n var self = this;\n\n data.selected = true;\n\n // If data.element is a DOM node, use it instead\n if ($(data.element).is('option')) {\n data.element.selected = true;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n if (this.$element.prop('multiple')) {\n this.current(function (currentData) {\n var val = [];\n\n data = [data];\n data.push.apply(data, currentData);\n\n for (var d = 0; d < data.length; d++) {\n var id = data[d].id;\n\n if ($.inArray(id, val) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n } else {\n var val = data.id;\n\n this.$element.val(val);\n this.$element.trigger('input').trigger('change');\n }\n };\n\n SelectAdapter.prototype.unselect = function (data) {\n var self = this;\n\n if (!this.$element.prop('multiple')) {\n return;\n }\n\n data.selected = false;\n\n if ($(data.element).is('option')) {\n data.element.selected = false;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n this.current(function (currentData) {\n var val = [];\n\n for (var d = 0; d < currentData.length; d++) {\n var id = currentData[d].id;\n\n if (id !== data.id && $.inArray(id, val) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n\n self.$element.trigger('input').trigger('change');\n });\n };\n\n SelectAdapter.prototype.bind = function (container, $container) {\n var self = this;\n\n this.container = container;\n\n container.on('select', function (params) {\n self.select(params.data);\n });\n\n container.on('unselect', function (params) {\n self.unselect(params.data);\n });\n };\n\n SelectAdapter.prototype.destroy = function () {\n // Remove anything added to child elements\n this.$element.find('*').each(function () {\n // Remove any custom data set by Select2\n Utils.RemoveData(this);\n });\n };\n\n SelectAdapter.prototype.query = function (params, callback) {\n var data = [];\n var self = this;\n\n var $options = this.$element.children();\n\n $options.each(function () {\n var $option = $(this);\n\n if (!$option.is('option') && !$option.is('optgroup')) {\n return;\n }\n\n var option = self.item($option);\n\n var matches = self.matches(params, option);\n\n if (matches !== null) {\n data.push(matches);\n }\n });\n\n callback({\n results: data\n });\n };\n\n SelectAdapter.prototype.addOptions = function ($options) {\n Utils.appendMany(this.$element, $options);\n };\n\n SelectAdapter.prototype.option = function (data) {\n var option;\n\n if (data.children) {\n option = document.createElement('optgroup');\n option.label = data.text;\n } else {\n option = document.createElement('option');\n\n if (option.textContent !== undefined) {\n option.textContent = data.text;\n } else {\n option.innerText = data.text;\n }\n }\n\n if (data.id !== undefined) {\n option.value = data.id;\n }\n\n if (data.disabled) {\n option.disabled = true;\n }\n\n if (data.selected) {\n option.selected = true;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n var $option = $(option);\n\n var normalizedData = this._normalizeItem(data);\n normalizedData.element = option;\n\n // Override the option's data with the combined data\n Utils.StoreData(option, 'data', normalizedData);\n\n return $option;\n };\n\n SelectAdapter.prototype.item = function ($option) {\n var data = {};\n\n data = Utils.GetData($option[0], 'data');\n\n if (data != null) {\n return data;\n }\n\n 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\n var $children = $option.children('option');\n var children = [];\n\n for (var c = 0; c < $children.length; c++) {\n var $child = $($children[c]);\n\n var child = this.item($child);\n\n children.push(child);\n }\n\n data.children = children;\n }\n\n data = this._normalizeItem(data);\n data.element = $option[0];\n\n Utils.StoreData($option[0], 'data', data);\n\n return data;\n };\n\n SelectAdapter.prototype._normalizeItem = function (item) {\n if (item !== Object(item)) {\n item = {\n id: item,\n text: item\n };\n }\n\n item = $.extend({}, {\n text: ''\n }, item);\n\n var defaults = {\n selected: false,\n disabled: false\n };\n\n if (item.id != null) {\n item.id = item.id.toString();\n }\n\n if (item.text != null) {\n item.text = item.text.toString();\n }\n\n if (item._resultId == null && item.id && this.container != null) {\n item._resultId = this.generateResultId(this.container, item);\n }\n\n return $.extend({}, defaults, item);\n };\n\n SelectAdapter.prototype.matches = function (params, data) {\n var matcher = this.options.get('matcher');\n\n return matcher(params, data);\n };\n\n return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n './select',\n '../utils',\n 'jquery'\n], function (SelectAdapter, Utils, $) {\n function ArrayAdapter ($element, options) {\n this._dataToConvert = options.get('data') || [];\n\n ArrayAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(ArrayAdapter, SelectAdapter);\n\n ArrayAdapter.prototype.bind = function (container, $container) {\n ArrayAdapter.__super__.bind.call(this, container, $container);\n\n this.addOptions(this.convertToOptions(this._dataToConvert));\n };\n\n ArrayAdapter.prototype.select = function (data) {\n var $option = this.$element.find('option').filter(function (i, elm) {\n return elm.value == data.id.toString();\n });\n\n if ($option.length === 0) {\n $option = this.option(data);\n\n this.addOptions($option);\n }\n\n ArrayAdapter.__super__.select.call(this, data);\n };\n\n ArrayAdapter.prototype.convertToOptions = function (data) {\n var self = this;\n\n var $existing = this.$element.find('option');\n var existingIds = $existing.map(function () {\n return self.item($(this)).id;\n }).get();\n\n var $options = [];\n\n // Filter out all items except for the one passed in the argument\n function onlyItem (item) {\n return function () {\n return $(this).val() == item.id;\n };\n }\n\n for (var d = 0; d < data.length; d++) {\n var item = this._normalizeItem(data[d]);\n\n // Skip items which were pre-loaded, only merge the data\n if ($.inArray(item.id, existingIds) >= 0) {\n var $existingOption = $existing.filter(onlyItem(item));\n\n var existingData = this.item($existingOption);\n var newData = $.extend(true, {}, item, existingData);\n\n var $newOption = this.option(newData);\n\n $existingOption.replaceWith($newOption);\n\n continue;\n }\n\n var $option = this.option(item);\n\n if (item.children) {\n var $children = this.convertToOptions(item.children);\n\n Utils.appendMany($option, $children);\n }\n\n $options.push($option);\n }\n\n return $options;\n };\n\n return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n './array',\n '../utils',\n 'jquery'\n], function (ArrayAdapter, Utils, $) {\n function AjaxAdapter ($element, options) {\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n if (this.ajaxOptions.processResults != null) {\n this.processResults = this.ajaxOptions.processResults;\n }\n\n AjaxAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n AjaxAdapter.prototype._applyDefaults = function (options) {\n var defaults = {\n data: function (params) {\n return $.extend({}, params, {\n q: params.term\n });\n },\n transport: function (params, success, failure) {\n var $request = $.ajax(params);\n\n $request.then(success);\n $request.fail(failure);\n\n return $request;\n }\n };\n\n return $.extend({}, defaults, options, true);\n };\n\n AjaxAdapter.prototype.processResults = function (results) {\n return results;\n };\n\n AjaxAdapter.prototype.query = function (params, callback) {\n var matches = [];\n var self = this;\n\n if (this._request != null) {\n // JSONP requests cannot always be aborted\n if ($.isFunction(this._request.abort)) {\n this._request.abort();\n }\n\n this._request = null;\n }\n\n var options = $.extend({\n type: 'GET'\n }, this.ajaxOptions);\n\n if (typeof options.url === 'function') {\n options.url = options.url.call(this.$element, params);\n }\n\n if (typeof options.data === 'function') {\n options.data = options.data.call(this.$element, params);\n }\n\n function request () {\n var $request = options.transport(options, function (data) {\n var results = self.processResults(data, params);\n\n if (self.options.get('debug') && window.console && console.error) {\n // Check to make sure that the response included a `results` key.\n if (!results || !results.results || !$.isArray(results.results)) {\n console.error(\n 'Select2: The AJAX results did not return an array in the ' +\n '`results` key of the response.'\n );\n }\n }\n\n callback(results);\n }, function () {\n // Attempt to detect if a request was aborted\n // Only works if the transport exposes a status property\n if ('status' in $request &&\n ($request.status === 0 || $request.status === '0')) {\n return;\n }\n\n self.trigger('results:message', {\n message: 'errorLoading'\n });\n });\n\n self._request = $request;\n }\n\n if (this.ajaxOptions.delay && params.term != null) {\n if (this._queryTimeout) {\n window.clearTimeout(this._queryTimeout);\n }\n\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n } else {\n request();\n }\n };\n\n return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n 'jquery'\n], function ($) {\n function Tags (decorated, $element, options) {\n var tags = options.get('tags');\n\n var createTag = options.get('createTag');\n\n if (createTag !== undefined) {\n this.createTag = createTag;\n }\n\n var insertTag = options.get('insertTag');\n\n if (insertTag !== undefined) {\n this.insertTag = insertTag;\n }\n\n decorated.call(this, $element, options);\n\n if ($.isArray(tags)) {\n for (var t = 0; t < tags.length; t++) {\n var tag = tags[t];\n var item = this._normalizeItem(tag);\n\n var $option = this.option(item);\n\n this.$element.append($option);\n }\n }\n }\n\n Tags.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n this._removeOldTags();\n\n if (params.term == null || params.page != null) {\n decorated.call(this, params, callback);\n return;\n }\n\n function wrapper (obj, child) {\n var data = obj.results;\n\n for (var i = 0; i < data.length; i++) {\n var option = data[i];\n\n var checkChildren = (\n option.children != null &&\n !wrapper({\n results: option.children\n }, true)\n );\n\n var optionText = (option.text || '').toUpperCase();\n var paramsTerm = (params.term || '').toUpperCase();\n\n var checkText = optionText === paramsTerm;\n\n if (checkText || checkChildren) {\n if (child) {\n return false;\n }\n\n obj.data = data;\n callback(obj);\n\n return;\n }\n }\n\n if (child) {\n return true;\n }\n\n var tag = self.createTag(params);\n\n if (tag != null) {\n var $option = self.option(tag);\n $option.attr('data-select2-tag', true);\n\n self.addOptions([$option]);\n\n self.insertTag(data, tag);\n }\n\n obj.results = data;\n\n callback(obj);\n }\n\n decorated.call(this, params, wrapper);\n };\n\n Tags.prototype.createTag = function (decorated, params) {\n var term = $.trim(params.term);\n\n if (term === '') {\n return null;\n }\n\n return {\n id: term,\n text: term\n };\n };\n\n Tags.prototype.insertTag = function (_, data, tag) {\n data.unshift(tag);\n };\n\n Tags.prototype._removeOldTags = function (_) {\n var $options = this.$element.find('option[data-select2-tag]');\n\n $options.each(function () {\n if (this.selected) {\n return;\n }\n\n $(this).remove();\n });\n };\n\n return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n 'jquery'\n], function ($) {\n function Tokenizer (decorated, $element, options) {\n var tokenizer = options.get('tokenizer');\n\n if (tokenizer !== undefined) {\n this.tokenizer = tokenizer;\n }\n\n decorated.call(this, $element, options);\n }\n\n Tokenizer.prototype.bind = function (decorated, container, $container) {\n decorated.call(this, container, $container);\n\n this.$search = container.dropdown.$search || container.selection.$search ||\n $container.find('.select2-search__field');\n };\n\n Tokenizer.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n function createAndSelect (data) {\n // Normalize the data object so we can use it for checks\n var item = self._normalizeItem(data);\n\n // Check if the data object already exists as a tag\n // Select it if it doesn't\n var $existingOptions = self.$element.find('option').filter(function () {\n return $(this).val() === item.id;\n });\n\n // If an existing option wasn't found for it, create the option\n if (!$existingOptions.length) {\n var $option = self.option(item);\n $option.attr('data-select2-tag', true);\n\n self._removeOldTags();\n self.addOptions([$option]);\n }\n\n // Select the item, now that we know there is an option for it\n select(item);\n }\n\n function select (data) {\n self.trigger('select', {\n data: data\n });\n }\n\n params.term = params.term || '';\n\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n if (tokenData.term !== params.term) {\n // Replace the search term if we have the search box\n if (this.$search.length) {\n this.$search.val(tokenData.term);\n this.$search.trigger('focus');\n }\n\n params.term = tokenData.term;\n }\n\n decorated.call(this, params, callback);\n };\n\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n var separators = options.get('tokenSeparators') || [];\n var term = params.term;\n var i = 0;\n\n var createTag = this.createTag || function (params) {\n return {\n id: params.term,\n text: params.term\n };\n };\n\n while (i < term.length) {\n var termChar = term[i];\n\n if ($.inArray(termChar, separators) === -1) {\n i++;\n\n continue;\n }\n\n var part = term.substr(0, i);\n var partParams = $.extend({}, params, {\n term: part\n });\n\n var data = createTag(partParams);\n\n if (data == null) {\n i++;\n continue;\n }\n\n callback(data);\n\n // Reset the term to not include the tokenized portion\n term = term.substr(i + 1) || '';\n i = 0;\n }\n\n return {\n term: term\n };\n };\n\n return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n function MinimumInputLength (decorated, $e, options) {\n this.minimumInputLength = options.get('minimumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (params.term.length < this.minimumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooShort',\n args: {\n minimum: this.minimumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n function MaximumInputLength (decorated, $e, options) {\n this.maximumInputLength = options.get('maximumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (this.maximumInputLength > 0 &&\n params.term.length > this.maximumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooLong',\n args: {\n maximum: this.maximumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n function MaximumSelectionLength (decorated, $e, options) {\n this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumSelectionLength.prototype.bind =\n function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function () {\n self._checkIfMaximumSelected();\n });\n };\n\n MaximumSelectionLength.prototype.query =\n function (decorated, params, callback) {\n var self = this;\n\n this._checkIfMaximumSelected(function () {\n decorated.call(self, params, callback);\n });\n };\n\n MaximumSelectionLength.prototype._checkIfMaximumSelected =\n function (_, successCallback) {\n var self = this;\n\n this.current(function (currentData) {\n var count = currentData != null ? currentData.length : 0;\n if (self.maximumSelectionLength > 0 &&\n count >= self.maximumSelectionLength) {\n self.trigger('results:message', {\n message: 'maximumSelected',\n args: {\n maximum: self.maximumSelectionLength\n }\n });\n return;\n }\n\n if (successCallback) {\n successCallback();\n }\n });\n };\n\n return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Dropdown ($element, options) {\n this.$element = $element;\n this.options = options;\n\n Dropdown.__super__.constructor.call(this);\n }\n\n Utils.Extend(Dropdown, Utils.Observable);\n\n Dropdown.prototype.render = function () {\n var $dropdown = $(\n '' +\n '' +\n ''\n );\n\n $dropdown.attr('dir', this.options.get('dir'));\n\n this.$dropdown = $dropdown;\n\n return $dropdown;\n };\n\n Dropdown.prototype.bind = function () {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.position = function ($dropdown, $container) {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.destroy = function () {\n // Remove the dropdown from the DOM\n this.$dropdown.remove();\n };\n\n return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n 'jquery',\n '../utils'\n], function ($, Utils) {\n function Search () { }\n\n Search.prototype.render = function (decorated) {\n var $rendered = decorated.call(this);\n\n var $search = $(\n '' +\n '' +\n ''\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n\n $rendered.prepend($search);\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n decorated.call(this, container, $container);\n\n this.$search.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n });\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$search.on('input', function (evt) {\n // Unbind the duplicated `keyup` event\n $(this).off('keyup');\n });\n\n this.$search.on('keyup input', function (evt) {\n self.handleSearch(evt);\n });\n\n container.on('open', function () {\n self.$search.attr('tabindex', 0);\n self.$search.attr('aria-controls', resultsId);\n\n self.$search.trigger('focus');\n\n window.setTimeout(function () {\n self.$search.trigger('focus');\n }, 0);\n });\n\n container.on('close', function () {\n self.$search.attr('tabindex', -1);\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n\n self.$search.val('');\n self.$search.trigger('blur');\n });\n\n container.on('focus', function () {\n if (!container.isOpen()) {\n self.$search.trigger('focus');\n }\n });\n\n container.on('results:all', function (params) {\n if (params.query.term == null || params.query.term === '') {\n var showSearch = self.showSearch(params);\n\n if (showSearch) {\n self.$searchContainer.removeClass('select2-search--hide');\n } else {\n self.$searchContainer.addClass('select2-search--hide');\n }\n }\n });\n\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n };\n\n Search.prototype.handleSearch = function (evt) {\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.showSearch = function (_, params) {\n return true;\n };\n\n return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n function HidePlaceholder (decorated, $element, options, dataAdapter) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n HidePlaceholder.prototype.append = function (decorated, data) {\n data.results = this.removePlaceholder(data.results);\n\n decorated.call(this, data);\n };\n\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n var modifiedData = data.slice(0);\n\n for (var d = data.length - 1; d >= 0; d--) {\n var item = data[d];\n\n if (this.placeholder.id === item.id) {\n modifiedData.splice(d, 1);\n }\n }\n\n return modifiedData;\n };\n\n return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n 'jquery'\n], function ($) {\n function InfiniteScroll (decorated, $element, options, dataAdapter) {\n this.lastParams = {};\n\n decorated.call(this, $element, options, dataAdapter);\n\n this.$loadingMore = this.createLoadingMore();\n this.loading = false;\n }\n\n InfiniteScroll.prototype.append = function (decorated, data) {\n this.$loadingMore.remove();\n this.loading = false;\n\n decorated.call(this, data);\n\n if (this.showLoadingMore(data)) {\n this.$results.append(this.$loadingMore);\n this.loadMoreIfNeeded();\n }\n };\n\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('query', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n container.on('query:append', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n };\n\n InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n var isLoadMoreVisible = $.contains(\n document.documentElement,\n this.$loadingMore[0]\n );\n\n if (this.loading || !isLoadMoreVisible) {\n return;\n }\n\n var currentOffset = this.$results.offset().top +\n this.$results.outerHeight(false);\n var loadingMoreOffset = this.$loadingMore.offset().top +\n this.$loadingMore.outerHeight(false);\n\n if (currentOffset + 50 >= loadingMoreOffset) {\n this.loadMore();\n }\n };\n\n InfiniteScroll.prototype.loadMore = function () {\n this.loading = true;\n\n var params = $.extend({}, {page: 1}, this.lastParams);\n\n params.page++;\n\n this.trigger('query:append', params);\n };\n\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n return data.pagination && data.pagination.more;\n };\n\n InfiniteScroll.prototype.createLoadingMore = function () {\n var $option = $(\n '
  • '\n );\n\n var message = this.options.get('translations').get('loadingMore');\n\n $option.html(message(this.lastParams));\n\n return $option;\n };\n\n return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n 'jquery',\n '../utils'\n], function ($, Utils) {\n function AttachBody (decorated, $element, options) {\n this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n decorated.call(this, $element, options);\n }\n\n AttachBody.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('open', function () {\n self._showDropdown();\n self._attachPositioningHandler(container);\n\n // Must bind after the results handlers to ensure correct sizing\n self._bindContainerResultHandlers(container);\n });\n\n container.on('close', function () {\n self._hideDropdown();\n self._detachPositioningHandler(container);\n });\n\n this.$dropdownContainer.on('mousedown', function (evt) {\n evt.stopPropagation();\n });\n };\n\n AttachBody.prototype.destroy = function (decorated) {\n decorated.call(this);\n\n this.$dropdownContainer.remove();\n };\n\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n // Clone all of the container classes\n $dropdown.attr('class', $container.attr('class'));\n\n $dropdown.removeClass('select2');\n $dropdown.addClass('select2-container--open');\n\n $dropdown.css({\n position: 'absolute',\n top: -999999\n });\n\n this.$container = $container;\n };\n\n AttachBody.prototype.render = function (decorated) {\n var $container = $('');\n\n var $dropdown = decorated.call(this);\n $container.append($dropdown);\n\n this.$dropdownContainer = $container;\n\n return $container;\n };\n\n AttachBody.prototype._hideDropdown = function (decorated) {\n this.$dropdownContainer.detach();\n };\n\n AttachBody.prototype._bindContainerResultHandlers =\n function (decorated, container) {\n\n // These should only be bound once\n if (this._containerResultsHandlersBound) {\n return;\n }\n\n var self = this;\n\n container.on('results:all', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:append', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:message', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('select', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('unselect', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n this._containerResultsHandlersBound = true;\n };\n\n AttachBody.prototype._attachPositioningHandler =\n function (decorated, container) {\n var self = this;\n\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.each(function () {\n Utils.StoreData(this, 'select2-scroll-position', {\n x: $(this).scrollLeft(),\n y: $(this).scrollTop()\n });\n });\n\n $watchers.on(scrollEvent, function (ev) {\n var position = Utils.GetData(this, 'select2-scroll-position');\n $(this).scrollTop(position.y);\n });\n\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n function (e) {\n self._positionDropdown();\n self._resizeDropdown();\n });\n };\n\n AttachBody.prototype._detachPositioningHandler =\n function (decorated, container) {\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.off(scrollEvent);\n\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n };\n\n AttachBody.prototype._positionDropdown = function () {\n var $window = $(window);\n\n var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\n var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\n\n var newDirection = null;\n\n var offset = this.$container.offset();\n\n offset.bottom = offset.top + this.$container.outerHeight(false);\n\n var container = {\n height: this.$container.outerHeight(false)\n };\n\n container.top = offset.top;\n container.bottom = offset.top + container.height;\n\n var dropdown = {\n height: this.$dropdown.outerHeight(false)\n };\n\n var viewport = {\n top: $window.scrollTop(),\n bottom: $window.scrollTop() + $window.height()\n };\n\n var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n var css = {\n left: offset.left,\n top: container.bottom\n };\n\n // Determine what the parent element is to use for calculating the offset\n var $offsetParent = this.$dropdownParent;\n\n // For statically positioned elements, we need to get the element\n // that is determining the offset\n if ($offsetParent.css('position') === 'static') {\n $offsetParent = $offsetParent.offsetParent();\n }\n\n var parentOffset = {\n top: 0,\n left: 0\n };\n\n if (\n $.contains(document.body, $offsetParent[0]) ||\n $offsetParent[0].isConnected\n ) {\n parentOffset = $offsetParent.offset();\n }\n\n css.top -= parentOffset.top;\n css.left -= parentOffset.left;\n\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\n newDirection = 'below';\n }\n\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n newDirection = 'above';\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n newDirection = 'below';\n }\n\n if (newDirection == 'above' ||\n (isCurrentlyAbove && newDirection !== 'below')) {\n css.top = container.top - parentOffset.top - dropdown.height;\n }\n\n if (newDirection != null) {\n this.$dropdown\n .removeClass('select2-dropdown--below select2-dropdown--above')\n .addClass('select2-dropdown--' + newDirection);\n this.$container\n .removeClass('select2-container--below select2-container--above')\n .addClass('select2-container--' + newDirection);\n }\n\n this.$dropdownContainer.css(css);\n };\n\n AttachBody.prototype._resizeDropdown = function () {\n var css = {\n width: this.$container.outerWidth(false) + 'px'\n };\n\n if (this.options.get('dropdownAutoWidth')) {\n css.minWidth = css.width;\n css.position = 'relative';\n css.width = 'auto';\n }\n\n this.$dropdown.css(css);\n };\n\n AttachBody.prototype._showDropdown = function (decorated) {\n this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n this._positionDropdown();\n this._resizeDropdown();\n };\n\n return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n function countResults (data) {\n var count = 0;\n\n for (var d = 0; d < data.length; d++) {\n var item = data[d];\n\n if (item.children) {\n count += countResults(item.children);\n } else {\n count++;\n }\n }\n\n return count;\n }\n\n function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n if (this.minimumResultsForSearch < 0) {\n this.minimumResultsForSearch = Infinity;\n }\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\n return false;\n }\n\n return decorated.call(this, params);\n };\n\n return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n '../utils'\n], function (Utils) {\n function SelectOnClose () { }\n\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('close', function (params) {\n self._handleSelectOnClose(params);\n });\n };\n\n SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n if (params && params.originalSelect2Event != null) {\n var event = params.originalSelect2Event;\n\n // Don't select an item if the close event was triggered from a select or\n // unselect event\n if (event._type === 'select' || event._type === 'unselect') {\n return;\n }\n }\n\n var $highlightedResults = this.getHighlightedResults();\n\n // Only select highlighted results\n if ($highlightedResults.length < 1) {\n return;\n }\n\n var data = Utils.GetData($highlightedResults[0], 'data');\n\n // Don't re-select already selected resulte\n if (\n (data.element != null && data.element.selected) ||\n (data.element == null && data.selected)\n ) {\n return;\n }\n\n this.trigger('select', {\n data: data\n });\n };\n\n return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n function CloseOnSelect () { }\n\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function (evt) {\n self._selectTriggered(evt);\n });\n\n container.on('unselect', function (evt) {\n self._selectTriggered(evt);\n });\n };\n\n CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n var originalEvent = evt.originalEvent;\n\n // Don't close if the control key is being held\n if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n return;\n }\n\n this.trigger('close', {\n originalEvent: originalEvent,\n originalSelect2Event: evt\n });\n };\n\n return CloseOnSelect;\n});\n\nS2.define('select2/i18n/en',[],function () {\n // English\n return {\n errorLoading: function () {\n return 'The results could not be loaded.';\n },\n inputTooLong: function (args) {\n var overChars = args.input.length - args.maximum;\n\n var message = 'Please delete ' + overChars + ' character';\n\n if (overChars != 1) {\n message += 's';\n }\n\n return message;\n },\n inputTooShort: function (args) {\n var remainingChars = args.minimum - args.input.length;\n\n var message = 'Please enter ' + remainingChars + ' or more characters';\n\n return message;\n },\n loadingMore: function () {\n return 'Loading more results…';\n },\n maximumSelected: function (args) {\n var message = 'You can only select ' + args.maximum + ' item';\n\n if (args.maximum != 1) {\n message += 's';\n }\n\n return message;\n },\n noResults: function () {\n return 'No results found';\n },\n searching: function () {\n return 'Searching…';\n },\n removeAllItems: function () {\n return 'Remove all items';\n }\n };\n});\n\nS2.define('select2/defaults',[\n 'jquery',\n 'require',\n\n './results',\n\n './selection/single',\n './selection/multiple',\n './selection/placeholder',\n './selection/allowClear',\n './selection/search',\n './selection/eventRelay',\n\n './utils',\n './translation',\n './diacritics',\n\n './data/select',\n './data/array',\n './data/ajax',\n './data/tags',\n './data/tokenizer',\n './data/minimumInputLength',\n './data/maximumInputLength',\n './data/maximumSelectionLength',\n\n './dropdown',\n './dropdown/search',\n './dropdown/hidePlaceholder',\n './dropdown/infiniteScroll',\n './dropdown/attachBody',\n './dropdown/minimumResultsForSearch',\n './dropdown/selectOnClose',\n './dropdown/closeOnSelect',\n\n './i18n/en'\n], function ($, require,\n\n ResultsList,\n\n SingleSelection, MultipleSelection, Placeholder, AllowClear,\n SelectionSearch, EventRelay,\n\n Utils, Translation, DIACRITICS,\n\n SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n\n EnglishTranslation) {\n function Defaults () {\n this.reset();\n }\n\n Defaults.prototype.apply = function (options) {\n options = $.extend(true, {}, this.defaults, options);\n\n if (options.dataAdapter == null) {\n if (options.ajax != null) {\n options.dataAdapter = AjaxData;\n } else if (options.data != null) {\n options.dataAdapter = ArrayData;\n } else {\n options.dataAdapter = SelectData;\n }\n\n if (options.minimumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MinimumInputLength\n );\n }\n\n if (options.maximumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumInputLength\n );\n }\n\n if (options.maximumSelectionLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumSelectionLength\n );\n }\n\n if (options.tags) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n }\n\n if (options.tokenSeparators != null || options.tokenizer != null) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n Tokenizer\n );\n }\n\n if (options.query != null) {\n var Query = require(options.amdBase + 'compat/query');\n\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n Query\n );\n }\n\n if (options.initSelection != null) {\n var InitSelection = require(options.amdBase + 'compat/initSelection');\n\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n InitSelection\n );\n }\n }\n\n if (options.resultsAdapter == null) {\n options.resultsAdapter = ResultsList;\n\n if (options.ajax != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n InfiniteScroll\n );\n }\n\n if (options.placeholder != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n HidePlaceholder\n );\n }\n\n if (options.selectOnClose) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n SelectOnClose\n );\n }\n }\n\n if (options.dropdownAdapter == null) {\n if (options.multiple) {\n options.dropdownAdapter = Dropdown;\n } else {\n var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n options.dropdownAdapter = SearchableDropdown;\n }\n\n if (options.minimumResultsForSearch !== 0) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n MinimumResultsForSearch\n );\n }\n\n if (options.closeOnSelect) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n CloseOnSelect\n );\n }\n\n if (\n options.dropdownCssClass != null ||\n options.dropdownCss != null ||\n options.adaptDropdownCssClass != null\n ) {\n var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\n\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n DropdownCSS\n );\n }\n\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n AttachBody\n );\n }\n\n if (options.selectionAdapter == null) {\n if (options.multiple) {\n options.selectionAdapter = MultipleSelection;\n } else {\n options.selectionAdapter = SingleSelection;\n }\n\n // Add the placeholder mixin if a placeholder was specified\n if (options.placeholder != null) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n Placeholder\n );\n }\n\n if (options.allowClear) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n AllowClear\n );\n }\n\n if (options.multiple) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionSearch\n );\n }\n\n if (\n options.containerCssClass != null ||\n options.containerCss != null ||\n options.adaptContainerCssClass != null\n ) {\n var ContainerCSS = require(options.amdBase + 'compat/containerCss');\n\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n ContainerCSS\n );\n }\n\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n EventRelay\n );\n }\n\n // If the defaults were not previously applied from an element, it is\n // possible for the language option to have not been resolved\n options.language = this._resolveLanguage(options.language);\n\n // Always fall back to English since it will always be complete\n options.language.push('en');\n\n var uniqueLanguages = [];\n\n for (var l = 0; l < options.language.length; l++) {\n var language = options.language[l];\n\n if (uniqueLanguages.indexOf(language) === -1) {\n uniqueLanguages.push(language);\n }\n }\n\n options.language = uniqueLanguages;\n\n options.translations = this._processTranslations(\n options.language,\n options.debug\n );\n\n return options;\n };\n\n Defaults.prototype.reset = function () {\n function stripDiacritics (text) {\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n function match(a) {\n return DIACRITICS[a] || a;\n }\n\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n }\n\n function matcher (params, data) {\n // Always return the object if there is nothing to compare\n if ($.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\n var matches = matcher(params, child);\n\n // If there wasn't a match, remove the object in the array\n if (matches == null) {\n match.children.splice(c, 1);\n }\n }\n\n // If any children matched, return the new object\n if (match.children.length > 0) {\n return match;\n }\n\n // If there were no matching children, check just the plain object\n return matcher(params, match);\n }\n\n var original = stripDiacritics(data.text).toUpperCase();\n var term = stripDiacritics(params.term).toUpperCase();\n\n // Check if the text contains the term\n if (original.indexOf(term) > -1) {\n return data;\n }\n\n // If it doesn't contain the term, don't return anything\n return null;\n }\n\n this.defaults = {\n amdBase: './',\n amdLanguageBase: './i18n/',\n closeOnSelect: true,\n debug: false,\n dropdownAutoWidth: false,\n escapeMarkup: Utils.escapeMarkup,\n language: {},\n matcher: matcher,\n minimumInputLength: 0,\n maximumInputLength: 0,\n maximumSelectionLength: 0,\n minimumResultsForSearch: 0,\n selectOnClose: false,\n scrollAfterSelect: false,\n sorter: function (data) {\n return data;\n },\n templateResult: function (result) {\n return result.text;\n },\n templateSelection: function (selection) {\n return selection.text;\n },\n theme: 'default',\n width: 'resolve'\n };\n };\n\n Defaults.prototype.applyFromElement = function (options, $element) {\n var optionLanguage = options.language;\n var defaultLanguage = this.defaults.language;\n var elementLanguage = $element.prop('lang');\n var parentLanguage = $element.closest('[lang]').prop('lang');\n\n var languages = Array.prototype.concat.call(\n this._resolveLanguage(elementLanguage),\n this._resolveLanguage(optionLanguage),\n this._resolveLanguage(defaultLanguage),\n this._resolveLanguage(parentLanguage)\n );\n\n options.language = languages;\n\n return options;\n };\n\n Defaults.prototype._resolveLanguage = function (language) {\n if (!language) {\n return [];\n }\n\n if ($.isEmptyObject(language)) {\n return [];\n }\n\n if ($.isPlainObject(language)) {\n return [language];\n }\n\n var languages;\n\n if (!$.isArray(language)) {\n languages = [language];\n } else {\n languages = language;\n }\n\n var resolvedLanguages = [];\n\n for (var l = 0; l < languages.length; l++) {\n resolvedLanguages.push(languages[l]);\n\n if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n // Extract the region information if it is included\n var languageParts = languages[l].split('-');\n var baseLanguage = languageParts[0];\n\n resolvedLanguages.push(baseLanguage);\n }\n }\n\n return resolvedLanguages;\n };\n\n Defaults.prototype._processTranslations = function (languages, debug) {\n var translations = new Translation();\n\n for (var l = 0; l < languages.length; l++) {\n var languageData = new Translation();\n\n var language = languages[l];\n\n if (typeof language === 'string') {\n try {\n // Try to load it with the original name\n languageData = Translation.loadPath(language);\n } catch (e) {\n try {\n // If we couldn't load it, check if it wasn't the full path\n language = this.defaults.amdLanguageBase + language;\n languageData = Translation.loadPath(language);\n } catch (ex) {\n // The translation could not be loaded at all. Sometimes this is\n // because of a configuration problem, other times this can be\n // because of how Select2 helps load all possible translation files\n if (debug && window.console && console.warn) {\n console.warn(\n 'Select2: The language file for \"' + language + '\" could ' +\n 'not be automatically loaded. A fallback will be used instead.'\n );\n }\n }\n }\n } else if ($.isPlainObject(language)) {\n languageData = new Translation(language);\n } else {\n languageData = language;\n }\n\n translations.extend(languageData);\n }\n\n return translations;\n };\n\n Defaults.prototype.set = function (key, value) {\n var camelKey = $.camelCase(key);\n\n var data = {};\n data[camelKey] = value;\n\n var convertedData = Utils._convertData(data);\n\n $.extend(true, this.defaults, convertedData);\n };\n\n var defaults = new Defaults();\n\n return defaults;\n});\n\nS2.define('select2/options',[\n 'require',\n 'jquery',\n './defaults',\n './utils'\n], function (require, $, Defaults, Utils) {\n function Options (options, $element) {\n this.options = options;\n\n if ($element != null) {\n this.fromElement($element);\n }\n\n if ($element != null) {\n this.options = Defaults.applyFromElement(this.options, $element);\n }\n\n this.options = Defaults.apply(this.options);\n\n if ($element && $element.is('input')) {\n var InputCompat = require(this.get('amdBase') + 'compat/inputData');\n\n this.options.dataAdapter = Utils.Decorate(\n this.options.dataAdapter,\n InputCompat\n );\n }\n }\n\n Options.prototype.fromElement = function ($e) {\n var excludedData = ['select2'];\n\n if (this.options.multiple == null) {\n this.options.multiple = $e.prop('multiple');\n }\n\n if (this.options.disabled == null) {\n this.options.disabled = $e.prop('disabled');\n }\n\n if (this.options.dir == null) {\n if ($e.prop('dir')) {\n this.options.dir = $e.prop('dir');\n } else if ($e.closest('[dir]').prop('dir')) {\n this.options.dir = $e.closest('[dir]').prop('dir');\n } else {\n this.options.dir = 'ltr';\n }\n }\n\n $e.prop('disabled', this.options.disabled);\n $e.prop('multiple', this.options.multiple);\n\n if (Utils.GetData($e[0], 'select2Tags')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-select2-tags` attribute has been changed to ' +\n 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n 'removed in future versions of Select2.'\n );\n }\n\n Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n Utils.StoreData($e[0], 'tags', true);\n }\n\n if (Utils.GetData($e[0], 'ajaxUrl')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-ajax-url` attribute has been changed to ' +\n '`data-ajax--url` and support for the old attribute will be removed' +\n ' in future versions of Select2.'\n );\n }\n\n $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n }\n\n var dataset = {};\n\n function upperCaseLetter(_, letter) {\n return letter.toUpperCase();\n }\n\n // Pre-load all of the attributes which are prefixed with `data-`\n for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n var attributeName = $e[0].attributes[attr].name;\n var prefix = 'data-';\n\n if (attributeName.substr(0, prefix.length) == prefix) {\n // Get the contents of the attribute after `data-`\n var dataName = attributeName.substring(prefix.length);\n\n // Get the data contents from the consistent source\n // This is more than likely the jQuery data helper\n var dataValue = Utils.GetData($e[0], dataName);\n\n // camelCase the attribute name to match the spec\n var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n // Store the data attribute contents into the dataset since\n dataset[camelDataName] = dataValue;\n }\n }\n\n // Prefer the element's `dataset` attribute if it exists\n // jQuery 1.x does not correctly handle data attributes with multiple dashes\n if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n dataset = $.extend(true, {}, $e[0].dataset, dataset);\n }\n\n // Prefer our internal data cache if it exists\n var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n\n data = Utils._convertData(data);\n\n for (var key in data) {\n if ($.inArray(key, excludedData) > -1) {\n continue;\n }\n\n if ($.isPlainObject(this.options[key])) {\n $.extend(this.options[key], data[key]);\n } else {\n this.options[key] = data[key];\n }\n }\n\n return this;\n };\n\n Options.prototype.get = function (key) {\n return this.options[key];\n };\n\n Options.prototype.set = function (key, val) {\n this.options[key] = val;\n };\n\n return Options;\n});\n\nS2.define('select2/core',[\n 'jquery',\n './options',\n './utils',\n './keys'\n], function ($, Options, Utils, KEYS) {\n var Select2 = function ($element, options) {\n if (Utils.GetData($element[0], 'select2') != null) {\n Utils.GetData($element[0], 'select2').destroy();\n }\n\n this.$element = $element;\n\n this.id = this._generateId($element);\n\n options = options || {};\n\n this.options = new Options(options, $element);\n\n Select2.__super__.constructor.call(this);\n\n // Set up the tabindex\n\n var tabindex = $element.attr('tabindex') || 0;\n Utils.StoreData($element[0], 'old-tabindex', tabindex);\n $element.attr('tabindex', '-1');\n\n // Set up containers and adapters\n\n var DataAdapter = this.options.get('dataAdapter');\n this.dataAdapter = new DataAdapter($element, this.options);\n\n var $container = this.render();\n\n this._placeContainer($container);\n\n var SelectionAdapter = this.options.get('selectionAdapter');\n this.selection = new SelectionAdapter($element, this.options);\n this.$selection = this.selection.render();\n\n this.selection.position(this.$selection, $container);\n\n var DropdownAdapter = this.options.get('dropdownAdapter');\n this.dropdown = new DropdownAdapter($element, this.options);\n this.$dropdown = this.dropdown.render();\n\n this.dropdown.position(this.$dropdown, $container);\n\n var ResultsAdapter = this.options.get('resultsAdapter');\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n this.$results = this.results.render();\n\n this.results.position(this.$results, this.$dropdown);\n\n // Bind events\n\n var self = this;\n\n // Bind the container to all of the adapters\n this._bindAdapters();\n\n // Register any DOM event handlers\n this._registerDomEvents();\n\n // Register any internal event handlers\n this._registerDataEvents();\n this._registerSelectionEvents();\n this._registerDropdownEvents();\n this._registerResultsEvents();\n this._registerEvents();\n\n // Set the initial state\n this.dataAdapter.current(function (initialData) {\n self.trigger('selection:update', {\n data: initialData\n });\n });\n\n // Hide the original select\n $element.addClass('select2-hidden-accessible');\n $element.attr('aria-hidden', 'true');\n\n // Synchronize any monitored attributes\n this._syncAttributes();\n\n Utils.StoreData($element[0], 'select2', this);\n\n // Ensure backwards compatibility with $element.data('select2').\n $element.data('select2', this);\n };\n\n Utils.Extend(Select2, Utils.Observable);\n\n Select2.prototype._generateId = function ($element) {\n var id = '';\n\n if ($element.attr('id') != null) {\n id = $element.attr('id');\n } else if ($element.attr('name') != null) {\n id = $element.attr('name') + '-' + Utils.generateChars(2);\n } else {\n id = Utils.generateChars(4);\n }\n\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = 'select2-' + id;\n\n return id;\n };\n\n Select2.prototype._placeContainer = function ($container) {\n $container.insertAfter(this.$element);\n\n var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n if (width != null) {\n $container.css('width', width);\n }\n };\n\n Select2.prototype._resolveWidth = function ($element, method) {\n var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n if (method == 'resolve') {\n var styleWidth = this._resolveWidth($element, 'style');\n\n if (styleWidth != null) {\n return styleWidth;\n }\n\n return this._resolveWidth($element, 'element');\n }\n\n if (method == 'element') {\n var elementWidth = $element.outerWidth(false);\n\n if (elementWidth <= 0) {\n return 'auto';\n }\n\n return elementWidth + 'px';\n }\n\n if (method == 'style') {\n var style = $element.attr('style');\n\n if (typeof(style) !== 'string') {\n return null;\n }\n\n var attrs = style.split(';');\n\n for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n var attr = attrs[i].replace(/\\s/g, '');\n var matches = attr.match(WIDTH);\n\n if (matches !== null && matches.length >= 1) {\n return matches[1];\n }\n }\n\n return null;\n }\n\n if (method == 'computedstyle') {\n var computedStyle = window.getComputedStyle($element[0]);\n\n return computedStyle.width;\n }\n\n return method;\n };\n\n Select2.prototype._bindAdapters = function () {\n this.dataAdapter.bind(this, this.$container);\n this.selection.bind(this, this.$container);\n\n this.dropdown.bind(this, this.$container);\n this.results.bind(this, this.$container);\n };\n\n Select2.prototype._registerDomEvents = function () {\n var self = this;\n\n this.$element.on('change.select2', function () {\n self.dataAdapter.current(function (data) {\n self.trigger('selection:update', {\n data: data\n });\n });\n });\n\n this.$element.on('focus.select2', function (evt) {\n self.trigger('focus', evt);\n });\n\n this._syncA = Utils.bind(this._syncAttributes, this);\n this._syncS = Utils.bind(this._syncSubtree, this);\n\n if (this.$element[0].attachEvent) {\n this.$element[0].attachEvent('onpropertychange', this._syncA);\n }\n\n var observer = window.MutationObserver ||\n window.WebKitMutationObserver ||\n window.MozMutationObserver\n ;\n\n if (observer != null) {\n this._observer = new observer(function (mutations) {\n self._syncA();\n self._syncS(null, mutations);\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(\n 'DOMAttrModified',\n self._syncA,\n false\n );\n this.$element[0].addEventListener(\n 'DOMNodeInserted',\n self._syncS,\n false\n );\n this.$element[0].addEventListener(\n 'DOMNodeRemoved',\n self._syncS,\n false\n );\n }\n };\n\n Select2.prototype._registerDataEvents = function () {\n var self = this;\n\n this.dataAdapter.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerSelectionEvents = function () {\n var self = this;\n var nonRelayEvents = ['toggle', 'focus'];\n\n this.selection.on('toggle', function () {\n self.toggleDropdown();\n });\n\n this.selection.on('focus', function (params) {\n self.focus(params);\n });\n\n this.selection.on('*', function (name, params) {\n if ($.inArray(name, nonRelayEvents) !== -1) {\n return;\n }\n\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerDropdownEvents = function () {\n var self = this;\n\n this.dropdown.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerResultsEvents = function () {\n var self = this;\n\n this.results.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerEvents = function () {\n var self = this;\n\n this.on('open', function () {\n self.$container.addClass('select2-container--open');\n });\n\n this.on('close', function () {\n self.$container.removeClass('select2-container--open');\n });\n\n this.on('enable', function () {\n self.$container.removeClass('select2-container--disabled');\n });\n\n this.on('disable', function () {\n self.$container.addClass('select2-container--disabled');\n });\n\n this.on('blur', function () {\n self.$container.removeClass('select2-container--focus');\n });\n\n this.on('query', function (params) {\n if (!self.isOpen()) {\n self.trigger('open', {});\n }\n\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:all', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('query:append', function (params) {\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:append', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('keypress', function (evt) {\n var key = evt.which;\n\n if (self.isOpen()) {\n if (key === KEYS.ESC || key === KEYS.TAB ||\n (key === KEYS.UP && evt.altKey)) {\n self.close(evt);\n\n evt.preventDefault();\n } else if (key === KEYS.ENTER) {\n self.trigger('results:select', {});\n\n evt.preventDefault();\n } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n self.trigger('results:toggle', {});\n\n evt.preventDefault();\n } else if (key === KEYS.UP) {\n self.trigger('results:previous', {});\n\n evt.preventDefault();\n } else if (key === KEYS.DOWN) {\n self.trigger('results:next', {});\n\n evt.preventDefault();\n }\n } else {\n if (key === KEYS.ENTER || key === KEYS.SPACE ||\n (key === KEYS.DOWN && evt.altKey)) {\n self.open();\n\n evt.preventDefault();\n }\n }\n });\n };\n\n Select2.prototype._syncAttributes = function () {\n this.options.set('disabled', this.$element.prop('disabled'));\n\n if (this.isDisabled()) {\n if (this.isOpen()) {\n this.close();\n }\n\n this.trigger('disable', {});\n } else {\n this.trigger('enable', {});\n }\n };\n\n Select2.prototype._isChangeMutation = function (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 (\n evt && evt.target && (\n evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'\n )\n ) {\n return;\n }\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\n if (node.selected) {\n changed = true;\n }\n }\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n changed = true;\n } else if ($.isArray(mutations)) {\n $.each(mutations, function(evt, mutation) {\n if (self._isChangeMutation(evt, mutation)) {\n // We've found a change mutation.\n // Let's escape from the loop and continue\n changed = true;\n return false;\n }\n });\n }\n return changed;\n };\n\n Select2.prototype._syncSubtree = function (evt, mutations) {\n var changed = this._isChangeMutation(evt, mutations);\n var self = this;\n\n // Only re-pull the data if we think there is a change\n if (changed) {\n this.dataAdapter.current(function (currentData) {\n self.trigger('selection:update', {\n data: currentData\n });\n });\n }\n };\n\n /**\n * Override the trigger method to automatically trigger pre-events when\n * there are events that can be prevented.\n */\n Select2.prototype.trigger = function (name, args) {\n var actualTrigger = Select2.__super__.trigger;\n var preTriggerMap = {\n 'open': 'opening',\n 'close': 'closing',\n 'select': 'selecting',\n 'unselect': 'unselecting',\n 'clear': 'clearing'\n };\n\n if (args === undefined) {\n args = {};\n }\n\n if (name in preTriggerMap) {\n var preTriggerName = preTriggerMap[name];\n var preTriggerArgs = {\n prevented: false,\n name: name,\n args: args\n };\n\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n if (preTriggerArgs.prevented) {\n args.prevented = true;\n\n return;\n }\n }\n\n actualTrigger.call(this, name, args);\n };\n\n Select2.prototype.toggleDropdown = function () {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n };\n\n Select2.prototype.open = function () {\n if (this.isOpen()) {\n return;\n }\n\n if (this.isDisabled()) {\n return;\n }\n\n this.trigger('query', {});\n };\n\n Select2.prototype.close = function (evt) {\n if (!this.isOpen()) {\n return;\n }\n\n this.trigger('close', { originalEvent : evt });\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n Select2.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n Select2.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n Select2.prototype.isOpen = function () {\n return this.$container.hasClass('select2-container--open');\n };\n\n Select2.prototype.hasFocus = function () {\n return this.$container.hasClass('select2-container--focus');\n };\n\n Select2.prototype.focus = function (data) {\n // No need to re-trigger focus events if we are already focused\n if (this.hasFocus()) {\n return;\n }\n\n this.$container.addClass('select2-container--focus');\n this.trigger('focus', {});\n };\n\n Select2.prototype.enable = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n ' instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n args = [true];\n }\n\n var disabled = !args[0];\n\n this.$element.prop('disabled', disabled);\n };\n\n Select2.prototype.data = function () {\n if (this.options.get('debug') &&\n arguments.length > 0 && window.console && console.warn) {\n console.warn(\n 'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n 'should consider setting the value instead using `$element.val()`.'\n );\n }\n\n var data = [];\n\n this.dataAdapter.current(function (currentData) {\n data = currentData;\n });\n\n return data;\n };\n\n Select2.prototype.val = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n ' removed in later Select2 versions. Use $element.val() instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n return this.$element.val();\n }\n\n var newVal = args[0];\n\n if ($.isArray(newVal)) {\n newVal = $.map(newVal, function (obj) {\n return obj.toString();\n });\n }\n\n this.$element.val(newVal).trigger('input').trigger('change');\n };\n\n Select2.prototype.destroy = function () {\n this.$container.remove();\n\n if (this.$element[0].detachEvent) {\n this.$element[0].detachEvent('onpropertychange', this._syncA);\n }\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]\n .removeEventListener('DOMAttrModified', this._syncA, false);\n this.$element[0]\n .removeEventListener('DOMNodeInserted', this._syncS, false);\n this.$element[0]\n .removeEventListener('DOMNodeRemoved', this._syncS, false);\n }\n\n this._syncA = null;\n this._syncS = null;\n\n this.$element.off('.select2');\n this.$element.attr('tabindex',\n Utils.GetData(this.$element[0], 'old-tabindex'));\n\n this.$element.removeClass('select2-hidden-accessible');\n this.$element.attr('aria-hidden', 'false');\n Utils.RemoveData(this.$element[0]);\n this.$element.removeData('select2');\n\n this.dataAdapter.destroy();\n this.selection.destroy();\n this.dropdown.destroy();\n this.results.destroy();\n\n this.dataAdapter = null;\n this.selection = null;\n this.dropdown = null;\n this.results = null;\n };\n\n Select2.prototype.render = function () {\n var $container = $(\n '' +\n '' +\n '' +\n ''\n );\n\n $container.attr('dir', this.options.get('dir'));\n\n this.$container = $container;\n\n this.$container.addClass('select2-container--' + this.options.get('theme'));\n\n Utils.StoreData($container[0], 'element', this.$element);\n\n return $container;\n };\n\n return Select2;\n});\n\nS2.define('jquery-mousewheel',[\n 'jquery'\n], function ($) {\n // Used to shim jQuery.mousewheel for non-full builds.\n return $;\n});\n\nS2.define('jquery.select2',[\n 'jquery',\n 'jquery-mousewheel',\n\n './select2/core',\n './select2/defaults',\n './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n if ($.fn.select2 == null) {\n // All methods that should return the element\n var thisMethods = ['open', 'close', 'destroy'];\n\n $.fn.select2 = function (options) {\n options = options || {};\n\n if (typeof options === 'object') {\n this.each(function () {\n var instanceOptions = $.extend(true, {}, options);\n\n var instance = new Select2($(this), instanceOptions);\n });\n\n return this;\n } else if (typeof options === 'string') {\n var ret;\n var args = Array.prototype.slice.call(arguments, 1);\n\n this.each(function () {\n var instance = Utils.GetData(this, 'select2');\n\n if (instance == null && window.console && console.error) {\n console.error(\n 'The select2(\\'' + options + '\\') method was called on an ' +\n 'element that is not using Select2.'\n );\n }\n\n ret = instance[options].apply(instance, args);\n });\n\n // Check if we should be returning `this`\n if ($.inArray(options, thisMethods) > -1) {\n return this;\n }\n\n return ret;\n } else {\n throw new Error('Invalid arguments for Select2: ' + options);\n }\n };\n }\n\n if ($.fn.select2.defaults == null) {\n $.fn.select2.defaults = Defaults;\n }\n\n return Select2;\n});\n\n // Return the AMD loader configuration so it can be used outside of this file\n return {\n define: S2.define,\n require: S2.require\n };\n}());\n\n // Autoload the jQuery bindings\n // We know that all of the modules exist above this, so we're safe\n var select2 = S2.require('jquery.select2');\n\n // Hold the AMD module references on the jQuery function that was just loaded\n // This allows Select2 to use the internal loader outside of this file, such\n // as in the language files.\n jQuery.fn.select2.amd = S2;\n\n // Return the Select2 instance for anyone who is importing it.\n return select2;\n}));\n","/**!\n * Sortable 1.15.2\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.15.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction matches( /**HTMLElement*/el, /**String*/selector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n return false;\n}\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\nfunction closest( /**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n return null;\n}\nvar R_SPACE = /\\s+/g;\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\nfunction css(el, prop, val) {\n var style = el && el.style;\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n } while (!selfOnly && (el = el.parentNode));\n }\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n return matrixFn && new matrixFn(appliedTransforms);\n}\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n return list;\n }\n return [];\n}\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode;\n\n // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect();\n\n // Set relative to edges of padding box of container\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n } while (container = container.parentNode);\n }\n }\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n\n /* jshint boss:true */\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n return false;\n}\n\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n currentChild++;\n }\n i++;\n }\n return null;\n}\n\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n return last || null;\n}\n\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\nfunction index(el, selector) {\n var index = 0;\n if (!el || !el.parentNode) {\n return -1;\n }\n\n /* jshint boss:true */\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n return index;\n}\n\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n return [offsetLeft, offsetTop];\n}\n\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n return -1;\n}\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n } while (elem = elem.parentNode);\n return getWindowScrollingElement();\n}\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n return dst;\n}\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\nvar _throttleTimeout;\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\nfunction getChildContainingRectFromElement(container, options, ghostEl) {\n var rect = {};\n Array.from(container.children).forEach(function (child) {\n var _rect$left, _rect$top, _rect$right, _rect$bottom;\n if (!closest(child, options.draggable, container, false) || child.animated || child === ghostEl) return;\n var childRect = getRect(child);\n rect.left = Math.min((_rect$left = rect.left) !== null && _rect$left !== void 0 ? _rect$left : Infinity, childRect.left);\n rect.top = Math.min((_rect$top = rect.top) !== null && _rect$top !== void 0 ? _rect$top : Infinity, childRect.top);\n rect.right = Math.max((_rect$right = rect.right) !== null && _rect$right !== void 0 ? _rect$right : -Infinity, childRect.right);\n rect.bottom = Math.max((_rect$bottom = rect.bottom) !== null && _rect$bottom !== void 0 ? _rect$bottom : -Infinity, childRect.bottom);\n });\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect);\n\n // If animating: compensate for current animation\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n target.toRect = toRect;\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) &&\n // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n }\n\n // if fromRect != toRect: animate\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n if (!time) {\n time = _this.options.animation;\n }\n _this.animate(target, animatingRect, toRect, time);\n }\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\nfunction repaint(target) {\n return target.offsetWidth;\n}\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n this.eventCanceled = false;\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return;\n // Fire global events if it exists in this sortable\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n\n // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized;\n\n // Add default options from plugin\n _extends(defaults, initialized.defaults);\n });\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return;\n\n // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);\n // Support for new CustomEvent feature\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\n ghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n\n _silent = false,\n savedInputChecked = [];\n\n/** @const */\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\n supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return;\n // false when <= IE11\n if (IE11OrLess) {\n return false;\n }\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n }(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n },\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n },\n /**\r\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n * @param {Number} x X position\r\n * @param {Number} y Y position\r\n * @return {HTMLElement} Element of the first found nearest Sortable\r\n */\n _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n },\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n var group = {};\n var originalGroup = options.group;\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n },\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n },\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n };\n\n// #1184 fix - Prevent click event on fallback if dragged but item not changed position\nif (documentExists && !ChromeForAndroid) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n if (nearest) {\n // Create imitation event\n var event = {};\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n nearest[expando]._onDragOver(event);\n }\n }\n};\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n\n/**\r\n * @class Sortable\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n this.el = el; // root element\n this.options = options = _extends({}, options);\n\n // Export instance\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults);\n\n // Set default options\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n _prepareGroup(options);\n\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n // Setup drag mode\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n }\n\n // Bind events\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n sortables.push(this.el);\n\n // Restore sorting\n options.store && options.store.get && this.sort(options.store.get(this) || []);\n\n // Add animation state manager\n _extends(this, AnimationStateManager());\n}\nSortable.prototype = /** @lends Sortable.prototype */{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart( /** Event|TouchEvent */evt) {\n if (!evt.cancelable) return;\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n _saveInputCheckedState(el);\n\n // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n if (dragEl) {\n return;\n }\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n }\n\n // cancel dnd if original target is content editable\n if (originalTarget.isContentEditable) {\n return;\n }\n\n // Safari ignores further event handling after mousedown\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n target = closest(target, options.draggable, el, false);\n if (target && target.animated) {\n return;\n }\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n }\n\n // Get the index of the dragged element within its parent\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable);\n\n // Check filter\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n }\n\n // Prepare `dragstart`\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart( /** Event */evt, /** Touch */touch, /** HTMLElement */target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n if (Sortable.eventCanceled) {\n _this._onDrop();\n return;\n }\n // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n _this._disableDelayedDragEvents();\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n }\n\n // Bind the events: dragstart/dragend\n _this._triggerDragStart(evt, touch);\n\n // Drag start event\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n });\n\n // Chosen item\n toggleClass(dragEl, options.chosenClass, true);\n };\n\n // Disable \"draggable\"\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop);\n\n // Make dragEl draggable (must be before delay for FireFox)\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n pluginEvent('delayStart', this, {\n evt: evt\n });\n\n // Delay is impossible for native DnD in Edge or IE\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n return;\n }\n // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler( /** TouchEvent|PointerEvent **/e) {\n var touch = e.touches ? e.touches[0] : e;\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart( /** Event */evt, /** Touch */touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n awaitingDragStarted = false;\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n var options = this.options;\n\n // Apply effect\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost();\n\n // Drag start event\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n _hideGhostForTarget();\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n target = parent; // store last element\n }\n /* jshint boss:true */ while (parent = parent.parentNode);\n }\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove( /**TouchEvent*/evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1);\n\n // only set the status to dragging, when we are actually dragging\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n this._onDragStart(evt, true);\n }\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options;\n\n // Position absolutely\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl);\n\n // Set transform-origin\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart( /**Event*/evt, /**boolean*/fallback) {\n var _this = this;\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n if (Sortable.eventCanceled) {\n this._onDrop();\n return;\n }\n pluginEvent('setupClone', this);\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.removeAttribute(\"id\");\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n this._hideClone();\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n }\n\n // #1143: IFrame support workaround\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n _this._hideClone();\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true);\n\n // Set proper drop events\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n on(document, 'drop', _this);\n\n // #1276 fix:\n css(dragEl, 'transform', 'translateZ(0)');\n }\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver( /**Event*/evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n if (_silent) return;\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n }\n\n // Capture animation state\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n _this.captureAnimationState();\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n }\n\n // Return invocation when dragEl is inserted (or completed)\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n }\n\n // Animation\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n }\n\n // Null lastTarget if it is not inside a previously swapped element\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n }\n\n // no bubbling and not fallback\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n\n // Do not detect for empty insert if already inserted\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n }\n\n // Call when dragEl has been inserted\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n ignoreNextClick = false;\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n if (revert) {\n parentEl = rootEl; // actualization\n capture();\n this._hideClone();\n dragOverEvent('revert');\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n return completed(true);\n }\n var elLastChild = lastChild(el, options.draggable);\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n }\n\n // if there is a last element, it is the target\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n if (target) {\n targetRect = getRect(target);\n }\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n if (elLastChild && elLastChild.nextSibling) {\n // the last draggable element is not the last node\n el.insertBefore(dragEl, elLastChild.nextSibling);\n } else {\n el.appendChild(dragEl);\n }\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n if (firstChild === dragEl) {\n return completed(false);\n }\n target = firstChild;\n targetRect = getRect(target);\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n }\n // If dragEl is already beside target: Do not insert\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n }\n\n // Undo chrome's scroll adjustment (has no effect on other browsers)\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n parentEl = dragEl.parentNode; // actualization\n\n // must be done before animation\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n changed();\n return completed(true);\n }\n }\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop( /**Event*/evt) {\n var el = this.el,\n options = this.options;\n\n // Get the index of the dragged element within its parent\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode;\n\n // Get again after plugin event\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n if (Sortable.eventCanceled) {\n this._nulling();\n return;\n }\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n _cancelNextTick(this.cloneId);\n _cancelNextTick(this._dragStartId);\n\n // Unbind events\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n this._offMoveEvents();\n this._offUpEvents();\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n css(dragEl, 'transform', '');\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n _disableDraggable(dragEl);\n dragEl.style['will-change'] = '';\n\n // Remove classes\n // ghostClass is added in dragStarted\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n toggleClass(dragEl, this.options.chosenClass, false);\n\n // Drag stop event\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n // Remove event\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n });\n\n // drag from one list and drop into another\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n });\n\n // Save sorting\n this.save();\n }\n }\n }\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent( /**Event*/evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n break;\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n _globalDragOver(evt);\n }\n break;\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n /**\r\n * Serializes the item into an array of string.\r\n * @returns {String[]}\r\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n for (; i < n; i++) {\n el = children[i];\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n return order;\n },\n /**\r\n * Sorts the elements according to the array.\r\n * @param {String[]} order order of the items\r\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n /**\r\n * Save the current sorting\r\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n /**\r\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n * @param {HTMLElement} el\r\n * @param {String} [selector] default: `options.draggable`\r\n * @returns {HTMLElement|null}\r\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n /**\r\n * Set/get option\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {*}\r\n */\n option: function option(name, value) {\n var options = this.options;\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n /**\r\n * Destroy\r\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n }\n // Remove draggable attributes\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n this._onDrop();\n this._disableDelayedDragEvents();\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n return;\n }\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return;\n\n // show clone at dragEl or original position\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\nfunction _globalDragOver( /**Event*/evt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n evt.cancelable && evt.preventDefault();\n}\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal;\n // Support for new CustomEvent feature\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n return retVal;\n}\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\nfunction _unsilent() {\n _silent = false;\n}\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var firstElRect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n var spacer = 10;\n return vertical ? evt.clientX < childContainingRect.left - spacer || evt.clientY < firstElRect.top && evt.clientX < firstElRect.right : evt.clientY < childContainingRect.top - spacer || evt.clientY < firstElRect.bottom && evt.clientX < firstElRect.left;\n}\nfunction _ghostIsLast(evt, vertical, sortable) {\n var lastElRect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n var spacer = 10;\n return vertical ? evt.clientX > childContainingRect.right + spacer || evt.clientY > lastElRect.bottom && evt.clientX > lastElRect.left : evt.clientY > childContainingRect.bottom + spacer || evt.clientX > lastElRect.right && evt.clientY > lastElRect.top;\n}\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n invert = invert || invertSwap;\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n return 0;\n}\n\n/**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\r\n * @return {Number} Direction dragEl must be swapped\r\n */\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n\n/**\r\n * Generate id\r\n * @param {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n while (i--) {\n sum += str.charCodeAt(i);\n }\n return sum.toString(36);\n}\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n}\n\n// Fixed #973:\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n}\n\n// Export utils\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n\n/**\r\n * Get the Sortable instance of an element\r\n * @param {HTMLElement} element The element\r\n * @return {Sortable|undefined} The instance of Sortable\r\n */\nSortable.get = function (element) {\n return element[expando];\n};\n\n/**\r\n * Mount a plugin to Sortable\r\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\r\n */\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n\n/**\r\n * Create sortable instance\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n};\n\n// Export\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n };\n\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt;\n\n // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback);\n\n // Listener for pointer element change\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval();\n // Detect for pointer elem change, emulating native DnD behaviour\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn;\n\n // New scroll root, set scrollEl\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n var layersOut = 0;\n var currentParent = scrollEl;\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n }\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\nfunction Revert() {}\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n this.sortable.animateAll();\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\nfunction Remove() {}\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\n multiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\n folding = false,\n // Folding any other time\n dragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n if (!sortable.options.avoidImplicitDeselect) {\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n }\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n avoidImplicitDeselect: false,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n dataTransfer.setData('Text', data);\n }\n };\n }\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n sortable._hideClone();\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n });\n\n // Sort multi-drag elements\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n\n sortable.captureAnimationState();\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n }\n\n // Remove all auxiliary multidrag items from el, if sorting enabled\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n initialFolding = false;\n // If leaving sort:false root, or already folding - Fold to new location\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute);\n\n // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n }\n\n // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n activeSortable._showClone(sortable);\n\n // Unfold animation for clones if showing from hidden\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children;\n\n // Multi-drag selection\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n\n // Modifier activated, select from last to dragEl\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvent: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n }\n }\n\n // Multi-drag drop\n if (dragStarted && this.isMultiDrag) {\n folding = false;\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect;\n\n // Prepare unfold animation\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n }\n\n // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n multiDragIndex++;\n });\n\n // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n if (update) {\n dispatchSortableEvent('update');\n dispatchSortableEvent('sort');\n }\n }\n }\n\n // Must be done after capturing individual rects (scroll bar)\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n multiDragSortable = toSortable;\n }\n\n // Remove clones if necessary\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return;\n\n // Only deselect if selection is in this sortable\n if (multiDragSortable !== this.sortable) return;\n\n // Only deselect if target is not item in this sortable\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return;\n\n // Only deselect if left click\n if (evt && evt.button !== 0) return;\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvent: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n multiDragSortable = sortable;\n }\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n });\n\n // multiDragElements will already be sorted if folding\n var newIndex;\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n return key;\n }\n }\n });\n}\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","\"use strict\";\nexport var PipsMode;\n(function (PipsMode) {\n PipsMode[\"Range\"] = \"range\";\n PipsMode[\"Steps\"] = \"steps\";\n PipsMode[\"Positions\"] = \"positions\";\n PipsMode[\"Count\"] = \"count\";\n PipsMode[\"Values\"] = \"values\";\n})(PipsMode || (PipsMode = {}));\nexport var PipsType;\n(function (PipsType) {\n PipsType[PipsType[\"None\"] = -1] = \"None\";\n PipsType[PipsType[\"NoValue\"] = 0] = \"NoValue\";\n PipsType[PipsType[\"LargeValue\"] = 1] = \"LargeValue\";\n PipsType[PipsType[\"SmallValue\"] = 2] = \"SmallValue\";\n})(PipsType || (PipsType = {}));\n//region Helper Methods\nfunction isValidFormatter(entry) {\n return isValidPartialFormatter(entry) && typeof entry.from === \"function\";\n}\nfunction isValidPartialFormatter(entry) {\n // partial formatters only need a to function and not a from function\n return typeof entry === \"object\" && typeof entry.to === \"function\";\n}\nfunction removeElement(el) {\n el.parentElement.removeChild(el);\n}\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n// Bindable version\nfunction preventDefault(e) {\n e.preventDefault();\n}\n// Removes duplicates from an array.\nfunction unique(array) {\n return array.filter(function (a) {\n return !this[a] ? (this[a] = true) : false;\n }, {});\n}\n// Round a value to the closest 'to'.\nfunction closest(value, to) {\n return Math.round(value / to) * to;\n}\n// Current position of an element relative to the document.\nfunction offset(elem, orientation) {\n var rect = elem.getBoundingClientRect();\n var doc = elem.ownerDocument;\n var docElem = doc.documentElement;\n var pageOffset = getPageOffset(doc);\n // getBoundingClientRect contains left scroll in Chrome on Android.\n // I haven't found a feature detection that proves this. Worst case\n // scenario on mis-match: the 'tap' feature on horizontal sliders breaks.\n if (/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)) {\n pageOffset.x = 0;\n }\n return orientation ? rect.top + pageOffset.y - docElem.clientTop : rect.left + pageOffset.x - docElem.clientLeft;\n}\n// Checks whether a value is numerical.\nfunction isNumeric(a) {\n return typeof a === \"number\" && !isNaN(a) && isFinite(a);\n}\n// Sets a class and removes it after [duration] ms.\nfunction addClassFor(element, className, duration) {\n if (duration > 0) {\n addClass(element, className);\n setTimeout(function () {\n removeClass(element, className);\n }, duration);\n }\n}\n// Limits a value to 0 - 100\nfunction limit(a) {\n return Math.max(Math.min(a, 100), 0);\n}\n// Wraps a variable as an array, if it isn't one yet.\n// Note that an input array is returned by reference!\nfunction asArray(a) {\n return Array.isArray(a) ? a : [a];\n}\n// Counts decimals\nfunction countDecimals(numStr) {\n numStr = String(numStr);\n var pieces = numStr.split(\".\");\n return pieces.length > 1 ? pieces[1].length : 0;\n}\n// http://youmightnotneedjquery.com/#add_class\nfunction addClass(el, className) {\n if (el.classList && !/\\s/.test(className)) {\n el.classList.add(className);\n }\n else {\n el.className += \" \" + className;\n }\n}\n// http://youmightnotneedjquery.com/#remove_class\nfunction removeClass(el, className) {\n if (el.classList && !/\\s/.test(className)) {\n el.classList.remove(className);\n }\n else {\n el.className = el.className.replace(new RegExp(\"(^|\\\\b)\" + className.split(\" \").join(\"|\") + \"(\\\\b|$)\", \"gi\"), \" \");\n }\n}\n// https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/\nfunction hasClass(el, className) {\n return el.classList ? el.classList.contains(className) : new RegExp(\"\\\\b\" + className + \"\\\\b\").test(el.className);\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY#Notes\nfunction getPageOffset(doc) {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (doc.compatMode || \"\") === \"CSS1Compat\";\n var x = supportPageOffset\n ? window.pageXOffset\n : isCSS1Compat\n ? doc.documentElement.scrollLeft\n : doc.body.scrollLeft;\n var y = supportPageOffset\n ? window.pageYOffset\n : isCSS1Compat\n ? doc.documentElement.scrollTop\n : doc.body.scrollTop;\n return {\n x: x,\n y: y,\n };\n}\n// we provide a function to compute constants instead\n// of accessing window.* as soon as the module needs it\n// so that we do not compute anything if not needed\nfunction getActions() {\n // Determine the events to bind. IE11 implements pointerEvents without\n // a prefix, which breaks compatibility with the IE10 implementation.\n return window.navigator.pointerEnabled\n ? {\n start: \"pointerdown\",\n move: \"pointermove\",\n end: \"pointerup\",\n }\n : window.navigator.msPointerEnabled\n ? {\n start: \"MSPointerDown\",\n move: \"MSPointerMove\",\n end: \"MSPointerUp\",\n }\n : {\n start: \"mousedown touchstart\",\n move: \"mousemove touchmove\",\n end: \"mouseup touchend\",\n };\n}\n// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n// Issue #785\nfunction getSupportsPassive() {\n var supportsPassive = false;\n /* eslint-disable */\n try {\n var opts = Object.defineProperty({}, \"passive\", {\n get: function () {\n supportsPassive = true;\n },\n });\n // @ts-ignore\n window.addEventListener(\"test\", null, opts);\n }\n catch (e) { }\n /* eslint-enable */\n return supportsPassive;\n}\nfunction getSupportsTouchActionNone() {\n return window.CSS && CSS.supports && CSS.supports(\"touch-action\", \"none\");\n}\n//endregion\n//region Range Calculation\n// Determine the size of a sub-range in relation to a full range.\nfunction subRangeRatio(pa, pb) {\n return 100 / (pb - pa);\n}\n// (percentage) How many percent is this value of this range?\nfunction fromPercentage(range, value, startRange) {\n return (value * 100) / (range[startRange + 1] - range[startRange]);\n}\n// (percentage) Where is this value on this range?\nfunction toPercentage(range, value) {\n return fromPercentage(range, range[0] < 0 ? value + Math.abs(range[0]) : value - range[0], 0);\n}\n// (value) How much is this percentage on this range?\nfunction isPercentage(range, value) {\n return (value * (range[1] - range[0])) / 100 + range[0];\n}\nfunction getJ(value, arr) {\n var j = 1;\n while (value >= arr[j]) {\n j += 1;\n }\n return j;\n}\n// (percentage) Input a value, find where, on a scale of 0-100, it applies.\nfunction toStepping(xVal, xPct, value) {\n if (value >= xVal.slice(-1)[0]) {\n return 100;\n }\n var j = getJ(value, xVal);\n var va = xVal[j - 1];\n var vb = xVal[j];\n var pa = xPct[j - 1];\n var pb = xPct[j];\n return pa + toPercentage([va, vb], value) / subRangeRatio(pa, pb);\n}\n// (value) Input a percentage, find where it is on the specified range.\nfunction fromStepping(xVal, xPct, value) {\n // There is no range group that fits 100\n if (value >= 100) {\n return xVal.slice(-1)[0];\n }\n var j = getJ(value, xPct);\n var va = xVal[j - 1];\n var vb = xVal[j];\n var pa = xPct[j - 1];\n var pb = xPct[j];\n return isPercentage([va, vb], (value - pa) * subRangeRatio(pa, pb));\n}\n// (percentage) Get the step that applies at a certain value.\nfunction getStep(xPct, xSteps, snap, value) {\n if (value === 100) {\n return value;\n }\n var j = getJ(value, xPct);\n var a = xPct[j - 1];\n var b = xPct[j];\n // If 'snap' is set, steps are used as fixed points on the slider.\n if (snap) {\n // Find the closest position, a or b.\n if (value - a > (b - a) / 2) {\n return b;\n }\n return a;\n }\n if (!xSteps[j - 1]) {\n return value;\n }\n return xPct[j - 1] + closest(value - xPct[j - 1], xSteps[j - 1]);\n}\n//endregion\n//region Spectrum\nvar Spectrum = /** @class */ (function () {\n function Spectrum(entry, snap, singleStep) {\n this.xPct = [];\n this.xVal = [];\n this.xSteps = [];\n this.xNumSteps = [];\n this.xHighestCompleteStep = [];\n this.xSteps = [singleStep || false];\n this.xNumSteps = [false];\n this.snap = snap;\n var index;\n var ordered = [];\n // Map the object keys to an array.\n Object.keys(entry).forEach(function (index) {\n ordered.push([asArray(entry[index]), index]);\n });\n // Sort all entries by value (numeric sort).\n ordered.sort(function (a, b) {\n return a[0][0] - b[0][0];\n });\n // Convert all entries to subranges.\n for (index = 0; index < ordered.length; index++) {\n this.handleEntryPoint(ordered[index][1], ordered[index][0]);\n }\n // Store the actual step values.\n // xSteps is sorted in the same order as xPct and xVal.\n this.xNumSteps = this.xSteps.slice(0);\n // Convert all numeric steps to the percentage of the subrange they represent.\n for (index = 0; index < this.xNumSteps.length; index++) {\n this.handleStepPoint(index, this.xNumSteps[index]);\n }\n }\n Spectrum.prototype.getDistance = function (value) {\n var distances = [];\n for (var index = 0; index < this.xNumSteps.length - 1; index++) {\n distances[index] = fromPercentage(this.xVal, value, index);\n }\n return distances;\n };\n // Calculate the percentual distance over the whole scale of ranges.\n // direction: 0 = backwards / 1 = forwards\n Spectrum.prototype.getAbsoluteDistance = function (value, distances, direction) {\n var xPct_index = 0;\n // Calculate range where to start calculation\n if (value < this.xPct[this.xPct.length - 1]) {\n while (value > this.xPct[xPct_index + 1]) {\n xPct_index++;\n }\n }\n else if (value === this.xPct[this.xPct.length - 1]) {\n xPct_index = this.xPct.length - 2;\n }\n // If looking backwards and the value is exactly at a range separator then look one range further\n if (!direction && value === this.xPct[xPct_index + 1]) {\n xPct_index++;\n }\n if (distances === null) {\n distances = [];\n }\n var start_factor;\n var rest_factor = 1;\n var rest_rel_distance = distances[xPct_index];\n var range_pct = 0;\n var rel_range_distance = 0;\n var abs_distance_counter = 0;\n var range_counter = 0;\n // Calculate what part of the start range the value is\n if (direction) {\n start_factor = (value - this.xPct[xPct_index]) / (this.xPct[xPct_index + 1] - this.xPct[xPct_index]);\n }\n else {\n start_factor = (this.xPct[xPct_index + 1] - value) / (this.xPct[xPct_index + 1] - this.xPct[xPct_index]);\n }\n // Do until the complete distance across ranges is calculated\n while (rest_rel_distance > 0) {\n // Calculate the percentage of total range\n range_pct = this.xPct[xPct_index + 1 + range_counter] - this.xPct[xPct_index + range_counter];\n // Detect if the margin, padding or limit is larger then the current range and calculate\n if (distances[xPct_index + range_counter] * rest_factor + 100 - start_factor * 100 > 100) {\n // If larger then take the percentual distance of the whole range\n rel_range_distance = range_pct * start_factor;\n // Rest factor of relative percentual distance still to be calculated\n rest_factor = (rest_rel_distance - 100 * start_factor) / distances[xPct_index + range_counter];\n // Set start factor to 1 as for next range it does not apply.\n start_factor = 1;\n }\n else {\n // If smaller or equal then take the percentual distance of the calculate percentual part of that range\n rel_range_distance = ((distances[xPct_index + range_counter] * range_pct) / 100) * rest_factor;\n // No rest left as the rest fits in current range\n rest_factor = 0;\n }\n if (direction) {\n abs_distance_counter = abs_distance_counter - rel_range_distance;\n // Limit range to first range when distance becomes outside of minimum range\n if (this.xPct.length + range_counter >= 1) {\n range_counter--;\n }\n }\n else {\n abs_distance_counter = abs_distance_counter + rel_range_distance;\n // Limit range to last range when distance becomes outside of maximum range\n if (this.xPct.length - range_counter >= 1) {\n range_counter++;\n }\n }\n // Rest of relative percentual distance still to be calculated\n rest_rel_distance = distances[xPct_index + range_counter] * rest_factor;\n }\n return value + abs_distance_counter;\n };\n Spectrum.prototype.toStepping = function (value) {\n value = toStepping(this.xVal, this.xPct, value);\n return value;\n };\n Spectrum.prototype.fromStepping = function (value) {\n return fromStepping(this.xVal, this.xPct, value);\n };\n Spectrum.prototype.getStep = function (value) {\n value = getStep(this.xPct, this.xSteps, this.snap, value);\n return value;\n };\n Spectrum.prototype.getDefaultStep = function (value, isDown, size) {\n var j = getJ(value, this.xPct);\n // When at the top or stepping down, look at the previous sub-range\n if (value === 100 || (isDown && value === this.xPct[j - 1])) {\n j = Math.max(j - 1, 1);\n }\n return (this.xVal[j] - this.xVal[j - 1]) / size;\n };\n Spectrum.prototype.getNearbySteps = function (value) {\n var j = getJ(value, this.xPct);\n return {\n stepBefore: {\n startValue: this.xVal[j - 2],\n step: this.xNumSteps[j - 2],\n highestStep: this.xHighestCompleteStep[j - 2],\n },\n thisStep: {\n startValue: this.xVal[j - 1],\n step: this.xNumSteps[j - 1],\n highestStep: this.xHighestCompleteStep[j - 1],\n },\n stepAfter: {\n startValue: this.xVal[j],\n step: this.xNumSteps[j],\n highestStep: this.xHighestCompleteStep[j],\n },\n };\n };\n Spectrum.prototype.countStepDecimals = function () {\n var stepDecimals = this.xNumSteps.map(countDecimals);\n return Math.max.apply(null, stepDecimals);\n };\n Spectrum.prototype.hasNoSize = function () {\n return this.xVal[0] === this.xVal[this.xVal.length - 1];\n };\n // Outside testing\n Spectrum.prototype.convert = function (value) {\n return this.getStep(this.toStepping(value));\n };\n Spectrum.prototype.handleEntryPoint = function (index, value) {\n var percentage;\n // Covert min/max syntax to 0 and 100.\n if (index === \"min\") {\n percentage = 0;\n }\n else if (index === \"max\") {\n percentage = 100;\n }\n else {\n percentage = parseFloat(index);\n }\n // Check for correct input.\n if (!isNumeric(percentage) || !isNumeric(value[0])) {\n throw new Error(\"noUiSlider: 'range' value isn't numeric.\");\n }\n // Store values.\n this.xPct.push(percentage);\n this.xVal.push(value[0]);\n var value1 = Number(value[1]);\n // NaN will evaluate to false too, but to keep\n // logging clear, set step explicitly. Make sure\n // not to override the 'step' setting with false.\n if (!percentage) {\n if (!isNaN(value1)) {\n this.xSteps[0] = value1;\n }\n }\n else {\n this.xSteps.push(isNaN(value1) ? false : value1);\n }\n this.xHighestCompleteStep.push(0);\n };\n Spectrum.prototype.handleStepPoint = function (i, n) {\n // Ignore 'false' stepping.\n if (!n) {\n return;\n }\n // Step over zero-length ranges (#948);\n if (this.xVal[i] === this.xVal[i + 1]) {\n this.xSteps[i] = this.xHighestCompleteStep[i] = this.xVal[i];\n return;\n }\n // Factor to range ratio\n this.xSteps[i] =\n fromPercentage([this.xVal[i], this.xVal[i + 1]], n, 0) / subRangeRatio(this.xPct[i], this.xPct[i + 1]);\n var totalSteps = (this.xVal[i + 1] - this.xVal[i]) / this.xNumSteps[i];\n var highestStep = Math.ceil(Number(totalSteps.toFixed(3)) - 1);\n var step = this.xVal[i] + this.xNumSteps[i] * highestStep;\n this.xHighestCompleteStep[i] = step;\n };\n return Spectrum;\n}());\n//endregion\n//region Options\n/*\tEvery input option is tested and parsed. This will prevent\n endless validation in internal methods. These tests are\n structured with an item for every option available. An\n option can be marked as required by setting the 'r' flag.\n The testing function is provided with three arguments:\n - The provided value for the option;\n - A reference to the options object;\n - The name for the option;\n\n The testing function returns false when an error is detected,\n or true when everything is OK. It can also modify the option\n object, to make sure all values can be correctly looped elsewhere. */\n//region Defaults\nvar defaultFormatter = {\n to: function (value) {\n return value === undefined ? \"\" : value.toFixed(2);\n },\n from: Number,\n};\nvar cssClasses = {\n target: \"target\",\n base: \"base\",\n origin: \"origin\",\n handle: \"handle\",\n handleLower: \"handle-lower\",\n handleUpper: \"handle-upper\",\n touchArea: \"touch-area\",\n horizontal: \"horizontal\",\n vertical: \"vertical\",\n background: \"background\",\n connect: \"connect\",\n connects: \"connects\",\n ltr: \"ltr\",\n rtl: \"rtl\",\n textDirectionLtr: \"txt-dir-ltr\",\n textDirectionRtl: \"txt-dir-rtl\",\n draggable: \"draggable\",\n drag: \"state-drag\",\n tap: \"state-tap\",\n active: \"active\",\n tooltip: \"tooltip\",\n pips: \"pips\",\n pipsHorizontal: \"pips-horizontal\",\n pipsVertical: \"pips-vertical\",\n marker: \"marker\",\n markerHorizontal: \"marker-horizontal\",\n markerVertical: \"marker-vertical\",\n markerNormal: \"marker-normal\",\n markerLarge: \"marker-large\",\n markerSub: \"marker-sub\",\n value: \"value\",\n valueHorizontal: \"value-horizontal\",\n valueVertical: \"value-vertical\",\n valueNormal: \"value-normal\",\n valueLarge: \"value-large\",\n valueSub: \"value-sub\",\n};\n// Namespaces of internal event listeners\nvar INTERNAL_EVENT_NS = {\n tooltips: \".__tooltips\",\n aria: \".__aria\",\n};\n//endregion\nfunction testStep(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'step' is not numeric.\");\n }\n // The step option can still be used to set stepping\n // for linear sliders. Overwritten if set in 'range'.\n parsed.singleStep = entry;\n}\nfunction testKeyboardPageMultiplier(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'keyboardPageMultiplier' is not numeric.\");\n }\n parsed.keyboardPageMultiplier = entry;\n}\nfunction testKeyboardMultiplier(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'keyboardMultiplier' is not numeric.\");\n }\n parsed.keyboardMultiplier = entry;\n}\nfunction testKeyboardDefaultStep(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'keyboardDefaultStep' is not numeric.\");\n }\n parsed.keyboardDefaultStep = entry;\n}\nfunction testRange(parsed, entry) {\n // Filter incorrect input.\n if (typeof entry !== \"object\" || Array.isArray(entry)) {\n throw new Error(\"noUiSlider: 'range' is not an object.\");\n }\n // Catch missing start or end.\n if (entry.min === undefined || entry.max === undefined) {\n throw new Error(\"noUiSlider: Missing 'min' or 'max' in 'range'.\");\n }\n parsed.spectrum = new Spectrum(entry, parsed.snap || false, parsed.singleStep);\n}\nfunction testStart(parsed, entry) {\n entry = asArray(entry);\n // Validate input. Values aren't tested, as the public .val method\n // will always provide a valid location.\n if (!Array.isArray(entry) || !entry.length) {\n throw new Error(\"noUiSlider: 'start' option is incorrect.\");\n }\n // Store the number of handles.\n parsed.handles = entry.length;\n // When the slider is initialized, the .val method will\n // be called with the start options.\n parsed.start = entry;\n}\nfunction testSnap(parsed, entry) {\n if (typeof entry !== \"boolean\") {\n throw new Error(\"noUiSlider: 'snap' option must be a boolean.\");\n }\n // Enforce 100% stepping within subranges.\n parsed.snap = entry;\n}\nfunction testAnimate(parsed, entry) {\n if (typeof entry !== \"boolean\") {\n throw new Error(\"noUiSlider: 'animate' option must be a boolean.\");\n }\n // Enforce 100% stepping within subranges.\n parsed.animate = entry;\n}\nfunction testAnimationDuration(parsed, entry) {\n if (typeof entry !== \"number\") {\n throw new Error(\"noUiSlider: 'animationDuration' option must be a number.\");\n }\n parsed.animationDuration = entry;\n}\nfunction testConnect(parsed, entry) {\n var connect = [false];\n var i;\n // Map legacy options\n if (entry === \"lower\") {\n entry = [true, false];\n }\n else if (entry === \"upper\") {\n entry = [false, true];\n }\n // Handle boolean options\n if (entry === true || entry === false) {\n for (i = 1; i < parsed.handles; i++) {\n connect.push(entry);\n }\n connect.push(false);\n }\n // Reject invalid input\n else if (!Array.isArray(entry) || !entry.length || entry.length !== parsed.handles + 1) {\n throw new Error(\"noUiSlider: 'connect' option doesn't match handle count.\");\n }\n else {\n connect = entry;\n }\n parsed.connect = connect;\n}\nfunction testOrientation(parsed, entry) {\n // Set orientation to an a numerical value for easy\n // array selection.\n switch (entry) {\n case \"horizontal\":\n parsed.ort = 0;\n break;\n case \"vertical\":\n parsed.ort = 1;\n break;\n default:\n throw new Error(\"noUiSlider: 'orientation' option is invalid.\");\n }\n}\nfunction testMargin(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'margin' option must be numeric.\");\n }\n // Issue #582\n if (entry === 0) {\n return;\n }\n parsed.margin = parsed.spectrum.getDistance(entry);\n}\nfunction testLimit(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'limit' option must be numeric.\");\n }\n parsed.limit = parsed.spectrum.getDistance(entry);\n if (!parsed.limit || parsed.handles < 2) {\n throw new Error(\"noUiSlider: 'limit' option is only supported on linear sliders with 2 or more handles.\");\n }\n}\nfunction testPadding(parsed, entry) {\n var index;\n if (!isNumeric(entry) && !Array.isArray(entry)) {\n throw new Error(\"noUiSlider: 'padding' option must be numeric or array of exactly 2 numbers.\");\n }\n if (Array.isArray(entry) && !(entry.length === 2 || isNumeric(entry[0]) || isNumeric(entry[1]))) {\n throw new Error(\"noUiSlider: 'padding' option must be numeric or array of exactly 2 numbers.\");\n }\n if (entry === 0) {\n return;\n }\n if (!Array.isArray(entry)) {\n entry = [entry, entry];\n }\n // 'getDistance' returns false for invalid values.\n parsed.padding = [parsed.spectrum.getDistance(entry[0]), parsed.spectrum.getDistance(entry[1])];\n for (index = 0; index < parsed.spectrum.xNumSteps.length - 1; index++) {\n // last \"range\" can't contain step size as it is purely an endpoint.\n if (parsed.padding[0][index] < 0 || parsed.padding[1][index] < 0) {\n throw new Error(\"noUiSlider: 'padding' option must be a positive number(s).\");\n }\n }\n var totalPadding = entry[0] + entry[1];\n var firstValue = parsed.spectrum.xVal[0];\n var lastValue = parsed.spectrum.xVal[parsed.spectrum.xVal.length - 1];\n if (totalPadding / (lastValue - firstValue) > 1) {\n throw new Error(\"noUiSlider: 'padding' option must not exceed 100% of the range.\");\n }\n}\nfunction testDirection(parsed, entry) {\n // Set direction as a numerical value for easy parsing.\n // Invert connection for RTL sliders, so that the proper\n // handles get the connect/background classes.\n switch (entry) {\n case \"ltr\":\n parsed.dir = 0;\n break;\n case \"rtl\":\n parsed.dir = 1;\n break;\n default:\n throw new Error(\"noUiSlider: 'direction' option was not recognized.\");\n }\n}\nfunction testBehaviour(parsed, entry) {\n // Make sure the input is a string.\n if (typeof entry !== \"string\") {\n throw new Error(\"noUiSlider: 'behaviour' must be a string containing options.\");\n }\n // Check if the string contains any keywords.\n // None are required.\n var tap = entry.indexOf(\"tap\") >= 0;\n var drag = entry.indexOf(\"drag\") >= 0;\n var fixed = entry.indexOf(\"fixed\") >= 0;\n var snap = entry.indexOf(\"snap\") >= 0;\n var hover = entry.indexOf(\"hover\") >= 0;\n var unconstrained = entry.indexOf(\"unconstrained\") >= 0;\n var invertConnects = entry.indexOf(\"invert-connects\") >= 0;\n var dragAll = entry.indexOf(\"drag-all\") >= 0;\n var smoothSteps = entry.indexOf(\"smooth-steps\") >= 0;\n if (fixed) {\n if (parsed.handles !== 2) {\n throw new Error(\"noUiSlider: 'fixed' behaviour must be used with 2 handles\");\n }\n // Use margin to enforce fixed state\n testMargin(parsed, parsed.start[1] - parsed.start[0]);\n }\n if (invertConnects && parsed.handles !== 2) {\n throw new Error(\"noUiSlider: 'invert-connects' behaviour must be used with 2 handles\");\n }\n if (unconstrained && (parsed.margin || parsed.limit)) {\n throw new Error(\"noUiSlider: 'unconstrained' behaviour cannot be used with margin or limit\");\n }\n parsed.events = {\n tap: tap || snap,\n drag: drag,\n dragAll: dragAll,\n smoothSteps: smoothSteps,\n fixed: fixed,\n snap: snap,\n hover: hover,\n unconstrained: unconstrained,\n invertConnects: invertConnects,\n };\n}\nfunction testTooltips(parsed, entry) {\n if (entry === false) {\n return;\n }\n if (entry === true || isValidPartialFormatter(entry)) {\n parsed.tooltips = [];\n for (var i = 0; i < parsed.handles; i++) {\n parsed.tooltips.push(entry);\n }\n }\n else {\n entry = asArray(entry);\n if (entry.length !== parsed.handles) {\n throw new Error(\"noUiSlider: must pass a formatter for all handles.\");\n }\n entry.forEach(function (formatter) {\n if (typeof formatter !== \"boolean\" && !isValidPartialFormatter(formatter)) {\n throw new Error(\"noUiSlider: 'tooltips' must be passed a formatter or 'false'.\");\n }\n });\n parsed.tooltips = entry;\n }\n}\nfunction testHandleAttributes(parsed, entry) {\n if (entry.length !== parsed.handles) {\n throw new Error(\"noUiSlider: must pass a attributes for all handles.\");\n }\n parsed.handleAttributes = entry;\n}\nfunction testAriaFormat(parsed, entry) {\n if (!isValidPartialFormatter(entry)) {\n throw new Error(\"noUiSlider: 'ariaFormat' requires 'to' method.\");\n }\n parsed.ariaFormat = entry;\n}\nfunction testFormat(parsed, entry) {\n if (!isValidFormatter(entry)) {\n throw new Error(\"noUiSlider: 'format' requires 'to' and 'from' methods.\");\n }\n parsed.format = entry;\n}\nfunction testKeyboardSupport(parsed, entry) {\n if (typeof entry !== \"boolean\") {\n throw new Error(\"noUiSlider: 'keyboardSupport' option must be a boolean.\");\n }\n parsed.keyboardSupport = entry;\n}\nfunction testDocumentElement(parsed, entry) {\n // This is an advanced option. Passed values are used without validation.\n parsed.documentElement = entry;\n}\nfunction testCssPrefix(parsed, entry) {\n if (typeof entry !== \"string\" && entry !== false) {\n throw new Error(\"noUiSlider: 'cssPrefix' must be a string or `false`.\");\n }\n parsed.cssPrefix = entry;\n}\nfunction testCssClasses(parsed, entry) {\n if (typeof entry !== \"object\") {\n throw new Error(\"noUiSlider: 'cssClasses' must be an object.\");\n }\n if (typeof parsed.cssPrefix === \"string\") {\n parsed.cssClasses = {};\n Object.keys(entry).forEach(function (key) {\n parsed.cssClasses[key] = parsed.cssPrefix + entry[key];\n });\n }\n else {\n parsed.cssClasses = entry;\n }\n}\n// Test all developer settings and parse to assumption-safe values.\nfunction testOptions(options) {\n // To prove a fix for #537, freeze options here.\n // If the object is modified, an error will be thrown.\n // Object.freeze(options);\n var parsed = {\n margin: null,\n limit: null,\n padding: null,\n animate: true,\n animationDuration: 300,\n ariaFormat: defaultFormatter,\n format: defaultFormatter,\n };\n // Tests are executed in the order they are presented here.\n var tests = {\n step: { r: false, t: testStep },\n keyboardPageMultiplier: { r: false, t: testKeyboardPageMultiplier },\n keyboardMultiplier: { r: false, t: testKeyboardMultiplier },\n keyboardDefaultStep: { r: false, t: testKeyboardDefaultStep },\n start: { r: true, t: testStart },\n connect: { r: true, t: testConnect },\n direction: { r: true, t: testDirection },\n snap: { r: false, t: testSnap },\n animate: { r: false, t: testAnimate },\n animationDuration: { r: false, t: testAnimationDuration },\n range: { r: true, t: testRange },\n orientation: { r: false, t: testOrientation },\n margin: { r: false, t: testMargin },\n limit: { r: false, t: testLimit },\n padding: { r: false, t: testPadding },\n behaviour: { r: true, t: testBehaviour },\n ariaFormat: { r: false, t: testAriaFormat },\n format: { r: false, t: testFormat },\n tooltips: { r: false, t: testTooltips },\n keyboardSupport: { r: true, t: testKeyboardSupport },\n documentElement: { r: false, t: testDocumentElement },\n cssPrefix: { r: true, t: testCssPrefix },\n cssClasses: { r: true, t: testCssClasses },\n handleAttributes: { r: false, t: testHandleAttributes },\n };\n var defaults = {\n connect: false,\n direction: \"ltr\",\n behaviour: \"tap\",\n orientation: \"horizontal\",\n keyboardSupport: true,\n cssPrefix: \"noUi-\",\n cssClasses: cssClasses,\n keyboardPageMultiplier: 5,\n keyboardMultiplier: 1,\n keyboardDefaultStep: 10,\n };\n // AriaFormat defaults to regular format, if any.\n if (options.format && !options.ariaFormat) {\n options.ariaFormat = options.format;\n }\n // Run all options through a testing mechanism to ensure correct\n // input. It should be noted that options might get modified to\n // be handled properly. E.g. wrapping integers in arrays.\n Object.keys(tests).forEach(function (name) {\n // If the option isn't set, but it is required, throw an error.\n if (!isSet(options[name]) && defaults[name] === undefined) {\n if (tests[name].r) {\n throw new Error(\"noUiSlider: '\" + name + \"' is required.\");\n }\n return;\n }\n tests[name].t(parsed, !isSet(options[name]) ? defaults[name] : options[name]);\n });\n // Forward pips options\n parsed.pips = options.pips;\n // All recent browsers accept unprefixed transform.\n // We need -ms- for IE9 and -webkit- for older Android;\n // Assume use of -webkit- if unprefixed and -ms- are not supported.\n // https://caniuse.com/#feat=transforms2d\n var d = document.createElement(\"div\");\n var msPrefix = d.style.msTransform !== undefined;\n var noPrefix = d.style.transform !== undefined;\n parsed.transformRule = noPrefix ? \"transform\" : msPrefix ? \"msTransform\" : \"webkitTransform\";\n // Pips don't move, so we can place them using left/top.\n var styles = [\n [\"left\", \"top\"],\n [\"right\", \"bottom\"],\n ];\n parsed.style = styles[parsed.dir][parsed.ort];\n return parsed;\n}\n//endregion\nfunction scope(target, options, originalOptions) {\n var actions = getActions();\n var supportsTouchActionNone = getSupportsTouchActionNone();\n var supportsPassive = supportsTouchActionNone && getSupportsPassive();\n // All variables local to 'scope' are prefixed with 'scope_'\n // Slider DOM Nodes\n var scope_Target = target;\n var scope_Base;\n var scope_ConnectBase;\n var scope_Handles;\n var scope_Connects;\n var scope_Pips;\n var scope_Tooltips;\n // Slider state values\n var scope_Spectrum = options.spectrum;\n var scope_Values = [];\n var scope_Locations = [];\n var scope_HandleNumbers = [];\n var scope_ActiveHandlesCount = 0;\n var scope_Events = {};\n var scope_ConnectsInverted = false;\n // Document Nodes\n var scope_Document = target.ownerDocument;\n var scope_DocumentElement = options.documentElement || scope_Document.documentElement;\n var scope_Body = scope_Document.body;\n // For horizontal sliders in standard ltr documents,\n // make .noUi-origin overflow to the left so the document doesn't scroll.\n var scope_DirOffset = scope_Document.dir === \"rtl\" || options.ort === 1 ? 0 : 100;\n // Creates a node, adds it to target, returns the new node.\n function addNodeTo(addTarget, className) {\n var div = scope_Document.createElement(\"div\");\n if (className) {\n addClass(div, className);\n }\n addTarget.appendChild(div);\n return div;\n }\n // Append a origin to the base\n function addOrigin(base, handleNumber) {\n var origin = addNodeTo(base, options.cssClasses.origin);\n var handle = addNodeTo(origin, options.cssClasses.handle);\n addNodeTo(handle, options.cssClasses.touchArea);\n handle.setAttribute(\"data-handle\", String(handleNumber));\n if (options.keyboardSupport) {\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex\n // 0 = focusable and reachable\n handle.setAttribute(\"tabindex\", \"0\");\n handle.addEventListener(\"keydown\", function (event) {\n return eventKeydown(event, handleNumber);\n });\n }\n if (options.handleAttributes !== undefined) {\n var attributes_1 = options.handleAttributes[handleNumber];\n Object.keys(attributes_1).forEach(function (attribute) {\n handle.setAttribute(attribute, attributes_1[attribute]);\n });\n }\n handle.setAttribute(\"role\", \"slider\");\n handle.setAttribute(\"aria-orientation\", options.ort ? \"vertical\" : \"horizontal\");\n if (handleNumber === 0) {\n addClass(handle, options.cssClasses.handleLower);\n }\n else if (handleNumber === options.handles - 1) {\n addClass(handle, options.cssClasses.handleUpper);\n }\n origin.handle = handle;\n return origin;\n }\n // Insert nodes for connect elements\n function addConnect(base, add) {\n if (!add) {\n return false;\n }\n return addNodeTo(base, options.cssClasses.connect);\n }\n // Add handles to the slider base.\n function addElements(connectOptions, base) {\n scope_ConnectBase = addNodeTo(base, options.cssClasses.connects);\n scope_Handles = [];\n scope_Connects = [];\n scope_Connects.push(addConnect(scope_ConnectBase, connectOptions[0]));\n // [::::O====O====O====]\n // connectOptions = [0, 1, 1, 1]\n for (var i = 0; i < options.handles; i++) {\n // Keep a list of all added handles.\n scope_Handles.push(addOrigin(base, i));\n scope_HandleNumbers[i] = i;\n scope_Connects.push(addConnect(scope_ConnectBase, connectOptions[i + 1]));\n }\n }\n // Initialize a single slider.\n function addSlider(addTarget) {\n // Apply classes and data to the target.\n addClass(addTarget, options.cssClasses.target);\n if (options.dir === 0) {\n addClass(addTarget, options.cssClasses.ltr);\n }\n else {\n addClass(addTarget, options.cssClasses.rtl);\n }\n if (options.ort === 0) {\n addClass(addTarget, options.cssClasses.horizontal);\n }\n else {\n addClass(addTarget, options.cssClasses.vertical);\n }\n var textDirection = getComputedStyle(addTarget).direction;\n if (textDirection === \"rtl\") {\n addClass(addTarget, options.cssClasses.textDirectionRtl);\n }\n else {\n addClass(addTarget, options.cssClasses.textDirectionLtr);\n }\n return addNodeTo(addTarget, options.cssClasses.base);\n }\n function addTooltip(handle, handleNumber) {\n if (!options.tooltips || !options.tooltips[handleNumber]) {\n return false;\n }\n return addNodeTo(handle.firstChild, options.cssClasses.tooltip);\n }\n function isSliderDisabled() {\n return scope_Target.hasAttribute(\"disabled\");\n }\n // Disable the slider dragging if any handle is disabled\n function isHandleDisabled(handleNumber) {\n var handleOrigin = scope_Handles[handleNumber];\n return handleOrigin.hasAttribute(\"disabled\");\n }\n function disable(handleNumber) {\n if (handleNumber !== null && handleNumber !== undefined) {\n scope_Handles[handleNumber].setAttribute(\"disabled\", \"\");\n scope_Handles[handleNumber].handle.removeAttribute(\"tabindex\");\n }\n else {\n scope_Target.setAttribute(\"disabled\", \"\");\n scope_Handles.forEach(function (handle) {\n handle.handle.removeAttribute(\"tabindex\");\n });\n }\n }\n function enable(handleNumber) {\n if (handleNumber !== null && handleNumber !== undefined) {\n scope_Handles[handleNumber].removeAttribute(\"disabled\");\n scope_Handles[handleNumber].handle.setAttribute(\"tabindex\", \"0\");\n }\n else {\n scope_Target.removeAttribute(\"disabled\");\n scope_Handles.forEach(function (handle) {\n handle.removeAttribute(\"disabled\");\n handle.handle.setAttribute(\"tabindex\", \"0\");\n });\n }\n }\n function removeTooltips() {\n if (scope_Tooltips) {\n removeEvent(\"update\" + INTERNAL_EVENT_NS.tooltips);\n scope_Tooltips.forEach(function (tooltip) {\n if (tooltip) {\n removeElement(tooltip);\n }\n });\n scope_Tooltips = null;\n }\n }\n // The tooltips option is a shorthand for using the 'update' event.\n function tooltips() {\n removeTooltips();\n // Tooltips are added with options.tooltips in original order.\n scope_Tooltips = scope_Handles.map(addTooltip);\n bindEvent(\"update\" + INTERNAL_EVENT_NS.tooltips, function (values, handleNumber, unencoded) {\n if (!scope_Tooltips || !options.tooltips) {\n return;\n }\n if (scope_Tooltips[handleNumber] === false) {\n return;\n }\n var formattedValue = values[handleNumber];\n if (options.tooltips[handleNumber] !== true) {\n formattedValue = options.tooltips[handleNumber].to(unencoded[handleNumber]);\n }\n scope_Tooltips[handleNumber].innerHTML = formattedValue;\n });\n }\n function aria() {\n removeEvent(\"update\" + INTERNAL_EVENT_NS.aria);\n bindEvent(\"update\" + INTERNAL_EVENT_NS.aria, function (values, handleNumber, unencoded, tap, positions) {\n // Update Aria Values for all handles, as a change in one changes min and max values for the next.\n scope_HandleNumbers.forEach(function (index) {\n var handle = scope_Handles[index];\n var min = checkHandlePosition(scope_Locations, index, 0, true, true, true);\n var max = checkHandlePosition(scope_Locations, index, 100, true, true, true);\n var now = positions[index];\n // Formatted value for display\n var text = String(options.ariaFormat.to(unencoded[index]));\n // Map to slider range values\n min = scope_Spectrum.fromStepping(min).toFixed(1);\n max = scope_Spectrum.fromStepping(max).toFixed(1);\n now = scope_Spectrum.fromStepping(now).toFixed(1);\n handle.children[0].setAttribute(\"aria-valuemin\", min);\n handle.children[0].setAttribute(\"aria-valuemax\", max);\n handle.children[0].setAttribute(\"aria-valuenow\", now);\n handle.children[0].setAttribute(\"aria-valuetext\", text);\n });\n });\n }\n function getGroup(pips) {\n // Use the range.\n if (pips.mode === PipsMode.Range || pips.mode === PipsMode.Steps) {\n return scope_Spectrum.xVal;\n }\n if (pips.mode === PipsMode.Count) {\n if (pips.values < 2) {\n throw new Error(\"noUiSlider: 'values' (>= 2) required for mode 'count'.\");\n }\n // Divide 0 - 100 in 'count' parts.\n var interval = pips.values - 1;\n var spread = 100 / interval;\n var values = [];\n // List these parts and have them handled as 'positions'.\n while (interval--) {\n values[interval] = interval * spread;\n }\n values.push(100);\n return mapToRange(values, pips.stepped);\n }\n if (pips.mode === PipsMode.Positions) {\n // Map all percentages to on-range values.\n return mapToRange(pips.values, pips.stepped);\n }\n if (pips.mode === PipsMode.Values) {\n // If the value must be stepped, it needs to be converted to a percentage first.\n if (pips.stepped) {\n return pips.values.map(function (value) {\n // Convert to percentage, apply step, return to value.\n return scope_Spectrum.fromStepping(scope_Spectrum.getStep(scope_Spectrum.toStepping(value)));\n });\n }\n // Otherwise, we can simply use the values.\n return pips.values;\n }\n return []; // pips.mode = never\n }\n function mapToRange(values, stepped) {\n return values.map(function (value) {\n return scope_Spectrum.fromStepping(stepped ? scope_Spectrum.getStep(value) : value);\n });\n }\n function generateSpread(pips) {\n function safeIncrement(value, increment) {\n // Avoid floating point variance by dropping the smallest decimal places.\n return Number((value + increment).toFixed(7));\n }\n var group = getGroup(pips);\n var indexes = {};\n var firstInRange = scope_Spectrum.xVal[0];\n var lastInRange = scope_Spectrum.xVal[scope_Spectrum.xVal.length - 1];\n var ignoreFirst = false;\n var ignoreLast = false;\n var prevPct = 0;\n // Create a copy of the group, sort it and filter away all duplicates.\n group = unique(group.slice().sort(function (a, b) {\n return a - b;\n }));\n // Make sure the range starts with the first element.\n if (group[0] !== firstInRange) {\n group.unshift(firstInRange);\n ignoreFirst = true;\n }\n // Likewise for the last one.\n if (group[group.length - 1] !== lastInRange) {\n group.push(lastInRange);\n ignoreLast = true;\n }\n group.forEach(function (current, index) {\n // Get the current step and the lower + upper positions.\n var step;\n var i;\n var q;\n var low = current;\n var high = group[index + 1];\n var newPct;\n var pctDifference;\n var pctPos;\n var type;\n var steps;\n var realSteps;\n var stepSize;\n var isSteps = pips.mode === PipsMode.Steps;\n // When using 'steps' mode, use the provided steps.\n // Otherwise, we'll step on to the next subrange.\n if (isSteps) {\n step = scope_Spectrum.xNumSteps[index];\n }\n // Default to a 'full' step.\n if (!step) {\n step = high - low;\n }\n // If high is undefined we are at the last subrange. Make sure it iterates once (#1088)\n if (high === undefined) {\n high = low;\n }\n // Make sure step isn't 0, which would cause an infinite loop (#654)\n step = Math.max(step, 0.0000001);\n // Find all steps in the subrange.\n for (i = low; i <= high; i = safeIncrement(i, step)) {\n // Get the percentage value for the current step,\n // calculate the size for the subrange.\n newPct = scope_Spectrum.toStepping(i);\n pctDifference = newPct - prevPct;\n steps = pctDifference / (pips.density || 1);\n realSteps = Math.round(steps);\n // This ratio represents the amount of percentage-space a point indicates.\n // For a density 1 the points/percentage = 1. For density 2, that percentage needs to be re-divided.\n // Round the percentage offset to an even number, then divide by two\n // to spread the offset on both sides of the range.\n stepSize = pctDifference / realSteps;\n // Divide all points evenly, adding the correct number to this subrange.\n // Run up to <= so that 100% gets a point, event if ignoreLast is set.\n for (q = 1; q <= realSteps; q += 1) {\n // The ratio between the rounded value and the actual size might be ~1% off.\n // Correct the percentage offset by the number of points\n // per subrange. density = 1 will result in 100 points on the\n // full range, 2 for 50, 4 for 25, etc.\n pctPos = prevPct + q * stepSize;\n indexes[pctPos.toFixed(5)] = [scope_Spectrum.fromStepping(pctPos), 0];\n }\n // Determine the point type.\n type = group.indexOf(i) > -1 ? PipsType.LargeValue : isSteps ? PipsType.SmallValue : PipsType.NoValue;\n // Enforce the 'ignoreFirst' option by overwriting the type for 0.\n if (!index && ignoreFirst && i !== high) {\n type = 0;\n }\n if (!(i === high && ignoreLast)) {\n // Mark the 'type' of this point. 0 = plain, 1 = real value, 2 = step value.\n indexes[newPct.toFixed(5)] = [i, type];\n }\n // Update the percentage count.\n prevPct = newPct;\n }\n });\n return indexes;\n }\n function addMarking(spread, filterFunc, formatter) {\n var _a, _b;\n var element = scope_Document.createElement(\"div\");\n var valueSizeClasses = (_a = {},\n _a[PipsType.None] = \"\",\n _a[PipsType.NoValue] = options.cssClasses.valueNormal,\n _a[PipsType.LargeValue] = options.cssClasses.valueLarge,\n _a[PipsType.SmallValue] = options.cssClasses.valueSub,\n _a);\n var markerSizeClasses = (_b = {},\n _b[PipsType.None] = \"\",\n _b[PipsType.NoValue] = options.cssClasses.markerNormal,\n _b[PipsType.LargeValue] = options.cssClasses.markerLarge,\n _b[PipsType.SmallValue] = options.cssClasses.markerSub,\n _b);\n var valueOrientationClasses = [options.cssClasses.valueHorizontal, options.cssClasses.valueVertical];\n var markerOrientationClasses = [options.cssClasses.markerHorizontal, options.cssClasses.markerVertical];\n addClass(element, options.cssClasses.pips);\n addClass(element, options.ort === 0 ? options.cssClasses.pipsHorizontal : options.cssClasses.pipsVertical);\n function getClasses(type, source) {\n var a = source === options.cssClasses.value;\n var orientationClasses = a ? valueOrientationClasses : markerOrientationClasses;\n var sizeClasses = a ? valueSizeClasses : markerSizeClasses;\n return source + \" \" + orientationClasses[options.ort] + \" \" + sizeClasses[type];\n }\n function addSpread(offset, value, type) {\n // Apply the filter function, if it is set.\n type = filterFunc ? filterFunc(value, type) : type;\n if (type === PipsType.None) {\n return;\n }\n // Add a marker for every point\n var node = addNodeTo(element, false);\n node.className = getClasses(type, options.cssClasses.marker);\n node.style[options.style] = offset + \"%\";\n // Values are only appended for points marked '1' or '2'.\n if (type > PipsType.NoValue) {\n node = addNodeTo(element, false);\n node.className = getClasses(type, options.cssClasses.value);\n node.setAttribute(\"data-value\", String(value));\n node.style[options.style] = offset + \"%\";\n node.innerHTML = String(formatter.to(value));\n }\n }\n // Append all points.\n Object.keys(spread).forEach(function (offset) {\n addSpread(offset, spread[offset][0], spread[offset][1]);\n });\n return element;\n }\n function removePips() {\n if (scope_Pips) {\n removeElement(scope_Pips);\n scope_Pips = null;\n }\n }\n function pips(pips) {\n // Fix #669\n removePips();\n var spread = generateSpread(pips);\n var filter = pips.filter;\n var format = pips.format || {\n to: function (value) {\n return String(Math.round(value));\n },\n };\n scope_Pips = scope_Target.appendChild(addMarking(spread, filter, format));\n return scope_Pips;\n }\n // Shorthand for base dimensions.\n function baseSize() {\n var rect = scope_Base.getBoundingClientRect();\n var alt = (\"offset\" + [\"Width\", \"Height\"][options.ort]);\n return options.ort === 0 ? rect.width || scope_Base[alt] : rect.height || scope_Base[alt];\n }\n // Handler for attaching events trough a proxy.\n function attachEvent(events, element, callback, data) {\n // This function can be used to 'filter' events to the slider.\n // element is a node, not a nodeList\n var method = function (event) {\n var e = fixEvent(event, data.pageOffset, data.target || element);\n // fixEvent returns false if this event has a different target\n // when handling (multi-) touch events;\n if (!e) {\n return false;\n }\n // doNotReject is passed by all end events to make sure released touches\n // are not rejected, leaving the slider \"stuck\" to the cursor;\n if (isSliderDisabled() && !data.doNotReject) {\n return false;\n }\n // Stop if an active 'tap' transition is taking place.\n if (hasClass(scope_Target, options.cssClasses.tap) && !data.doNotReject) {\n return false;\n }\n // Ignore right or middle clicks on start #454\n if (events === actions.start && e.buttons !== undefined && e.buttons > 1) {\n return false;\n }\n // Ignore right or middle clicks on start #454\n if (data.hover && e.buttons) {\n return false;\n }\n // 'supportsPassive' is only true if a browser also supports touch-action: none in CSS.\n // iOS safari does not, so it doesn't get to benefit from passive scrolling. iOS does support\n // touch-action: manipulation, but that allows panning, which breaks\n // sliders after zooming/on non-responsive pages.\n // See: https://bugs.webkit.org/show_bug.cgi?id=133112\n if (!supportsPassive) {\n e.preventDefault();\n }\n e.calcPoint = e.points[options.ort];\n // Call the event handler with the event [ and additional data ].\n callback(e, data);\n return;\n };\n var methods = [];\n // Bind a closure on the target for every event type.\n events.split(\" \").forEach(function (eventName) {\n element.addEventListener(eventName, method, supportsPassive ? { passive: true } : false);\n methods.push([eventName, method]);\n });\n return methods;\n }\n // Provide a clean event with standardized offset values.\n function fixEvent(e, pageOffset, eventTarget) {\n // Filter the event to register the type, which can be\n // touch, mouse or pointer. Offset changes need to be\n // made on an event specific basis.\n var touch = e.type.indexOf(\"touch\") === 0;\n var mouse = e.type.indexOf(\"mouse\") === 0;\n var pointer = e.type.indexOf(\"pointer\") === 0;\n var x = 0;\n var y = 0;\n // IE10 implemented pointer events with a prefix;\n if (e.type.indexOf(\"MSPointer\") === 0) {\n pointer = true;\n }\n // Erroneous events seem to be passed in occasionally on iOS/iPadOS after user finishes interacting with\n // the slider. They appear to be of type MouseEvent, yet they don't have usual properties set. Ignore\n // events that have no touches or buttons associated with them. (#1057, #1079, #1095)\n if (e.type === \"mousedown\" && !e.buttons && !e.touches) {\n return false;\n }\n // The only thing one handle should be concerned about is the touches that originated on top of it.\n if (touch) {\n // Returns true if a touch originated on the target.\n var isTouchOnTarget = function (checkTouch) {\n var target = checkTouch.target;\n return (target === eventTarget ||\n eventTarget.contains(target) ||\n (e.composed && e.composedPath().shift() === eventTarget));\n };\n // In the case of touchstart events, we need to make sure there is still no more than one\n // touch on the target so we look amongst all touches.\n if (e.type === \"touchstart\") {\n var targetTouches = Array.prototype.filter.call(e.touches, isTouchOnTarget);\n // Do not support more than one touch per handle.\n if (targetTouches.length > 1) {\n return false;\n }\n x = targetTouches[0].pageX;\n y = targetTouches[0].pageY;\n }\n else {\n // In the other cases, find on changedTouches is enough.\n var targetTouch = Array.prototype.find.call(e.changedTouches, isTouchOnTarget);\n // Cancel if the target touch has not moved.\n if (!targetTouch) {\n return false;\n }\n x = targetTouch.pageX;\n y = targetTouch.pageY;\n }\n }\n pageOffset = pageOffset || getPageOffset(scope_Document);\n if (mouse || pointer) {\n x = e.clientX + pageOffset.x;\n y = e.clientY + pageOffset.y;\n }\n e.pageOffset = pageOffset;\n e.points = [x, y];\n e.cursor = mouse || pointer; // Fix #435\n return e;\n }\n // Translate a coordinate in the document to a percentage on the slider\n function calcPointToPercentage(calcPoint) {\n var location = calcPoint - offset(scope_Base, options.ort);\n var proposal = (location * 100) / baseSize();\n // Clamp proposal between 0% and 100%\n // Out-of-bound coordinates may occur when .noUi-base pseudo-elements\n // are used (e.g. contained handles feature)\n proposal = limit(proposal);\n return options.dir ? 100 - proposal : proposal;\n }\n // Find handle closest to a certain percentage on the slider\n function getClosestHandle(clickedPosition) {\n var smallestDifference = 100;\n var handleNumber = false;\n scope_Handles.forEach(function (handle, index) {\n // Disabled handles are ignored\n if (isHandleDisabled(index)) {\n return;\n }\n var handlePosition = scope_Locations[index];\n var differenceWithThisHandle = Math.abs(handlePosition - clickedPosition);\n // Initial state\n var clickAtEdge = differenceWithThisHandle === 100 && smallestDifference === 100;\n // Difference with this handle is smaller than the previously checked handle\n var isCloser = differenceWithThisHandle < smallestDifference;\n var isCloserAfter = differenceWithThisHandle <= smallestDifference && clickedPosition > handlePosition;\n if (isCloser || isCloserAfter || clickAtEdge) {\n handleNumber = index;\n smallestDifference = differenceWithThisHandle;\n }\n });\n return handleNumber;\n }\n // Fire 'end' when a mouse or pen leaves the document.\n function documentLeave(event, data) {\n if (event.type === \"mouseout\" &&\n event.target.nodeName === \"HTML\" &&\n event.relatedTarget === null) {\n eventEnd(event, data);\n }\n }\n // Handle movement on document for handle and range drag.\n function eventMove(event, data) {\n // Fix #498\n // Check value of .buttons in 'start' to work around a bug in IE10 mobile (data.buttonsProperty).\n // https://connect.microsoft.com/IE/feedback/details/927005/mobile-ie10-windows-phone-buttons-property-of-pointermove-event-always-zero\n // IE9 has .buttons and .which zero on mousemove.\n // Firefox breaks the spec MDN defines.\n if (navigator.appVersion.indexOf(\"MSIE 9\") === -1 && event.buttons === 0 && data.buttonsProperty !== 0) {\n return eventEnd(event, data);\n }\n // Check if we are moving up or down\n var movement = (options.dir ? -1 : 1) * (event.calcPoint - data.startCalcPoint);\n // Convert the movement into a percentage of the slider width/height\n var proposal = (movement * 100) / data.baseSize;\n moveHandles(movement > 0, proposal, data.locations, data.handleNumbers, data.connect);\n }\n // Unbind move events on document, call callbacks.\n function eventEnd(event, data) {\n // The handle is no longer active, so remove the class.\n if (data.handle) {\n removeClass(data.handle, options.cssClasses.active);\n scope_ActiveHandlesCount -= 1;\n }\n // Unbind the move and end events, which are added on 'start'.\n data.listeners.forEach(function (c) {\n scope_DocumentElement.removeEventListener(c[0], c[1]);\n });\n if (scope_ActiveHandlesCount === 0) {\n // Remove dragging class.\n removeClass(scope_Target, options.cssClasses.drag);\n setZindex();\n // Remove cursor styles and text-selection events bound to the body.\n if (event.cursor) {\n scope_Body.style.cursor = \"\";\n scope_Body.removeEventListener(\"selectstart\", preventDefault);\n }\n }\n if (options.events.smoothSteps) {\n data.handleNumbers.forEach(function (handleNumber) {\n setHandle(handleNumber, scope_Locations[handleNumber], true, true, false, false);\n });\n data.handleNumbers.forEach(function (handleNumber) {\n fireEvent(\"update\", handleNumber);\n });\n }\n data.handleNumbers.forEach(function (handleNumber) {\n fireEvent(\"change\", handleNumber);\n fireEvent(\"set\", handleNumber);\n fireEvent(\"end\", handleNumber);\n });\n }\n // Bind move events on document.\n function eventStart(event, data) {\n // Ignore event if any handle is disabled\n if (data.handleNumbers.some(isHandleDisabled)) {\n return;\n }\n var handle;\n if (data.handleNumbers.length === 1) {\n var handleOrigin = scope_Handles[data.handleNumbers[0]];\n handle = handleOrigin.children[0];\n scope_ActiveHandlesCount += 1;\n // Mark the handle as 'active' so it can be styled.\n addClass(handle, options.cssClasses.active);\n }\n // A drag should never propagate up to the 'tap' event.\n event.stopPropagation();\n // Record the event listeners.\n var listeners = [];\n // Attach the move and end events.\n var moveEvent = attachEvent(actions.move, scope_DocumentElement, eventMove, {\n // The event target has changed so we need to propagate the original one so that we keep\n // relying on it to extract target touches.\n target: event.target,\n handle: handle,\n connect: data.connect,\n listeners: listeners,\n startCalcPoint: event.calcPoint,\n baseSize: baseSize(),\n pageOffset: event.pageOffset,\n handleNumbers: data.handleNumbers,\n buttonsProperty: event.buttons,\n locations: scope_Locations.slice(),\n });\n var endEvent = attachEvent(actions.end, scope_DocumentElement, eventEnd, {\n target: event.target,\n handle: handle,\n listeners: listeners,\n doNotReject: true,\n handleNumbers: data.handleNumbers,\n });\n var outEvent = attachEvent(\"mouseout\", scope_DocumentElement, documentLeave, {\n target: event.target,\n handle: handle,\n listeners: listeners,\n doNotReject: true,\n handleNumbers: data.handleNumbers,\n });\n // We want to make sure we pushed the listeners in the listener list rather than creating\n // a new one as it has already been passed to the event handlers.\n listeners.push.apply(listeners, moveEvent.concat(endEvent, outEvent));\n // Text selection isn't an issue on touch devices,\n // so adding cursor styles can be skipped.\n if (event.cursor) {\n // Prevent the 'I' cursor and extend the range-drag cursor.\n scope_Body.style.cursor = getComputedStyle(event.target).cursor;\n // Mark the target with a dragging state.\n if (scope_Handles.length > 1) {\n addClass(scope_Target, options.cssClasses.drag);\n }\n // Prevent text selection when dragging the handles.\n // In noUiSlider <= 9.2.0, this was handled by calling preventDefault on mouse/touch start/move,\n // which is scroll blocking. The selectstart event is supported by FireFox starting from version 52,\n // meaning the only holdout is iOS Safari. This doesn't matter: text selection isn't triggered there.\n // The 'cursor' flag is false.\n // See: http://caniuse.com/#search=selectstart\n scope_Body.addEventListener(\"selectstart\", preventDefault, false);\n }\n data.handleNumbers.forEach(function (handleNumber) {\n fireEvent(\"start\", handleNumber);\n });\n }\n // Move closest handle to tapped location.\n function eventTap(event) {\n // The tap event shouldn't propagate up\n event.stopPropagation();\n var proposal = calcPointToPercentage(event.calcPoint);\n var handleNumber = getClosestHandle(proposal);\n // Tackle the case that all handles are 'disabled'.\n if (handleNumber === false) {\n return;\n }\n // Flag the slider as it is now in a transitional state.\n // Transition takes a configurable amount of ms (default 300). Re-enable the slider after that.\n if (!options.events.snap) {\n addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration);\n }\n setHandle(handleNumber, proposal, true, true);\n setZindex();\n fireEvent(\"slide\", handleNumber, true);\n fireEvent(\"update\", handleNumber, true);\n if (!options.events.snap) {\n fireEvent(\"change\", handleNumber, true);\n fireEvent(\"set\", handleNumber, true);\n }\n else {\n eventStart(event, { handleNumbers: [handleNumber] });\n }\n }\n // Fires a 'hover' event for a hovered mouse/pen position.\n function eventHover(event) {\n var proposal = calcPointToPercentage(event.calcPoint);\n var to = scope_Spectrum.getStep(proposal);\n var value = scope_Spectrum.fromStepping(to);\n Object.keys(scope_Events).forEach(function (targetEvent) {\n if (\"hover\" === targetEvent.split(\".\")[0]) {\n scope_Events[targetEvent].forEach(function (callback) {\n callback.call(scope_Self, value);\n });\n }\n });\n }\n // Handles keydown on focused handles\n // Don't move the document when pressing arrow keys on focused handles\n function eventKeydown(event, handleNumber) {\n if (isSliderDisabled() || isHandleDisabled(handleNumber)) {\n return false;\n }\n var horizontalKeys = [\"Left\", \"Right\"];\n var verticalKeys = [\"Down\", \"Up\"];\n var largeStepKeys = [\"PageDown\", \"PageUp\"];\n var edgeKeys = [\"Home\", \"End\"];\n if (options.dir && !options.ort) {\n // On an right-to-left slider, the left and right keys act inverted\n horizontalKeys.reverse();\n }\n else if (options.ort && !options.dir) {\n // On a top-to-bottom slider, the up and down keys act inverted\n verticalKeys.reverse();\n largeStepKeys.reverse();\n }\n // Strip \"Arrow\" for IE compatibility. https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key\n var key = event.key.replace(\"Arrow\", \"\");\n var isLargeDown = key === largeStepKeys[0];\n var isLargeUp = key === largeStepKeys[1];\n var isDown = key === verticalKeys[0] || key === horizontalKeys[0] || isLargeDown;\n var isUp = key === verticalKeys[1] || key === horizontalKeys[1] || isLargeUp;\n var isMin = key === edgeKeys[0];\n var isMax = key === edgeKeys[1];\n if (!isDown && !isUp && !isMin && !isMax) {\n return true;\n }\n event.preventDefault();\n var to;\n if (isUp || isDown) {\n var direction = isDown ? 0 : 1;\n var steps = getNextStepsForHandle(handleNumber);\n var step = steps[direction];\n // At the edge of a slider, do nothing\n if (step === null) {\n return false;\n }\n // No step set, use the default of 10% of the sub-range\n if (step === false) {\n step = scope_Spectrum.getDefaultStep(scope_Locations[handleNumber], isDown, options.keyboardDefaultStep);\n }\n if (isLargeUp || isLargeDown) {\n step *= options.keyboardPageMultiplier;\n }\n else {\n step *= options.keyboardMultiplier;\n }\n // Step over zero-length ranges (#948);\n step = Math.max(step, 0.0000001);\n // Decrement for down steps\n step = (isDown ? -1 : 1) * step;\n to = scope_Values[handleNumber] + step;\n }\n else if (isMax) {\n // End key\n to = options.spectrum.xVal[options.spectrum.xVal.length - 1];\n }\n else {\n // Home key\n to = options.spectrum.xVal[0];\n }\n setHandle(handleNumber, scope_Spectrum.toStepping(to), true, true);\n fireEvent(\"slide\", handleNumber);\n fireEvent(\"update\", handleNumber);\n fireEvent(\"change\", handleNumber);\n fireEvent(\"set\", handleNumber);\n return false;\n }\n // Attach events to several slider parts.\n function bindSliderEvents(behaviour) {\n // Attach the standard drag event to the handles.\n if (!behaviour.fixed) {\n scope_Handles.forEach(function (handle, index) {\n // These events are only bound to the visual handle\n // element, not the 'real' origin element.\n attachEvent(actions.start, handle.children[0], eventStart, {\n handleNumbers: [index],\n });\n });\n }\n // Attach the tap event to the slider base.\n if (behaviour.tap) {\n attachEvent(actions.start, scope_Base, eventTap, {});\n }\n // Fire hover events\n if (behaviour.hover) {\n attachEvent(actions.move, scope_Base, eventHover, {\n hover: true,\n });\n }\n // Make the range draggable.\n if (behaviour.drag) {\n scope_Connects.forEach(function (connect, index) {\n if (connect === false || index === 0 || index === scope_Connects.length - 1) {\n return;\n }\n var handleBefore = scope_Handles[index - 1];\n var handleAfter = scope_Handles[index];\n var eventHolders = [connect];\n var handlesToDrag = [handleBefore, handleAfter];\n var handleNumbersToDrag = [index - 1, index];\n addClass(connect, options.cssClasses.draggable);\n // When the range is fixed, the entire range can\n // be dragged by the handles. The handle in the first\n // origin will propagate the start event upward,\n // but it needs to be bound manually on the other.\n if (behaviour.fixed) {\n eventHolders.push(handleBefore.children[0]);\n eventHolders.push(handleAfter.children[0]);\n }\n if (behaviour.dragAll) {\n handlesToDrag = scope_Handles;\n handleNumbersToDrag = scope_HandleNumbers;\n }\n eventHolders.forEach(function (eventHolder) {\n attachEvent(actions.start, eventHolder, eventStart, {\n handles: handlesToDrag,\n handleNumbers: handleNumbersToDrag,\n connect: connect,\n });\n });\n });\n }\n }\n // Attach an event to this slider, possibly including a namespace\n function bindEvent(namespacedEvent, callback) {\n scope_Events[namespacedEvent] = scope_Events[namespacedEvent] || [];\n scope_Events[namespacedEvent].push(callback);\n // If the event bound is 'update,' fire it immediately for all handles.\n if (namespacedEvent.split(\".\")[0] === \"update\") {\n scope_Handles.forEach(function (a, index) {\n fireEvent(\"update\", index);\n });\n }\n }\n function isInternalNamespace(namespace) {\n return namespace === INTERNAL_EVENT_NS.aria || namespace === INTERNAL_EVENT_NS.tooltips;\n }\n // Undo attachment of event\n function removeEvent(namespacedEvent) {\n var event = namespacedEvent && namespacedEvent.split(\".\")[0];\n var namespace = event ? namespacedEvent.substring(event.length) : namespacedEvent;\n Object.keys(scope_Events).forEach(function (bind) {\n var tEvent = bind.split(\".\")[0];\n var tNamespace = bind.substring(tEvent.length);\n if ((!event || event === tEvent) && (!namespace || namespace === tNamespace)) {\n // only delete protected internal event if intentional\n if (!isInternalNamespace(tNamespace) || namespace === tNamespace) {\n delete scope_Events[bind];\n }\n }\n });\n }\n // External event handling\n function fireEvent(eventName, handleNumber, tap) {\n Object.keys(scope_Events).forEach(function (targetEvent) {\n var eventType = targetEvent.split(\".\")[0];\n if (eventName === eventType) {\n scope_Events[targetEvent].forEach(function (callback) {\n callback.call(\n // Use the slider public API as the scope ('this')\n scope_Self, \n // Return values as array, so arg_1[arg_2] is always valid.\n scope_Values.map(options.format.to), \n // Handle index, 0 or 1\n handleNumber, \n // Un-formatted slider values\n scope_Values.slice(), \n // Event is fired by tap, true or false\n tap || false, \n // Left offset of the handle, in relation to the slider\n scope_Locations.slice(), \n // add the slider public API to an accessible parameter when this is unavailable\n scope_Self);\n });\n }\n });\n }\n // Split out the handle positioning logic so the Move event can use it, too\n function checkHandlePosition(reference, handleNumber, to, lookBackward, lookForward, getValue, smoothSteps) {\n var distance;\n // For sliders with multiple handles, limit movement to the other handle.\n // Apply the margin option by adding it to the handle positions.\n if (scope_Handles.length > 1 && !options.events.unconstrained) {\n if (lookBackward && handleNumber > 0) {\n distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber - 1], options.margin, false);\n to = Math.max(to, distance);\n }\n if (lookForward && handleNumber < scope_Handles.length - 1) {\n distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber + 1], options.margin, true);\n to = Math.min(to, distance);\n }\n }\n // The limit option has the opposite effect, limiting handles to a\n // maximum distance from another. Limit must be > 0, as otherwise\n // handles would be unmovable.\n if (scope_Handles.length > 1 && options.limit) {\n if (lookBackward && handleNumber > 0) {\n distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber - 1], options.limit, false);\n to = Math.min(to, distance);\n }\n if (lookForward && handleNumber < scope_Handles.length - 1) {\n distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber + 1], options.limit, true);\n to = Math.max(to, distance);\n }\n }\n // The padding option keeps the handles a certain distance from the\n // edges of the slider. Padding must be > 0.\n if (options.padding) {\n if (handleNumber === 0) {\n distance = scope_Spectrum.getAbsoluteDistance(0, options.padding[0], false);\n to = Math.max(to, distance);\n }\n if (handleNumber === scope_Handles.length - 1) {\n distance = scope_Spectrum.getAbsoluteDistance(100, options.padding[1], true);\n to = Math.min(to, distance);\n }\n }\n if (!smoothSteps) {\n to = scope_Spectrum.getStep(to);\n }\n // Limit percentage to the 0 - 100 range\n to = limit(to);\n // Return false if handle can't move\n if (to === reference[handleNumber] && !getValue) {\n return false;\n }\n return to;\n }\n // Uses slider orientation to create CSS rules. a = base value;\n function inRuleOrder(v, a) {\n var o = options.ort;\n return (o ? a : v) + \", \" + (o ? v : a);\n }\n // Moves handle(s) by a percentage\n // (bool, % to move, [% where handle started, ...], [index in scope_Handles, ...])\n function moveHandles(upward, proposal, locations, handleNumbers, connect) {\n var proposals = locations.slice();\n // Store first handle now, so we still have it in case handleNumbers is reversed\n var firstHandle = handleNumbers[0];\n var smoothSteps = options.events.smoothSteps;\n var b = [!upward, upward];\n var f = [upward, !upward];\n // Copy handleNumbers so we don't change the dataset\n handleNumbers = handleNumbers.slice();\n // Check to see which handle is 'leading'.\n // If that one can't move the second can't either.\n if (upward) {\n handleNumbers.reverse();\n }\n // Step 1: get the maximum percentage that any of the handles can move\n if (handleNumbers.length > 1) {\n handleNumbers.forEach(function (handleNumber, o) {\n var to = checkHandlePosition(proposals, handleNumber, proposals[handleNumber] + proposal, b[o], f[o], false, smoothSteps);\n // Stop if one of the handles can't move.\n if (to === false) {\n proposal = 0;\n }\n else {\n proposal = to - proposals[handleNumber];\n proposals[handleNumber] = to;\n }\n });\n }\n // If using one handle, check backward AND forward\n else {\n b = f = [true];\n }\n var state = false;\n // Step 2: Try to set the handles with the found percentage\n handleNumbers.forEach(function (handleNumber, o) {\n state =\n setHandle(handleNumber, locations[handleNumber] + proposal, b[o], f[o], false, smoothSteps) || state;\n });\n // Step 3: If a handle moved, fire events\n if (state) {\n handleNumbers.forEach(function (handleNumber) {\n fireEvent(\"update\", handleNumber);\n fireEvent(\"slide\", handleNumber);\n });\n // If target is a connect, then fire drag event\n if (connect != undefined) {\n fireEvent(\"drag\", firstHandle);\n }\n }\n }\n // Takes a base value and an offset. This offset is used for the connect bar size.\n // In the initial design for this feature, the origin element was 1% wide.\n // Unfortunately, a rounding bug in Chrome makes it impossible to implement this feature\n // in this manner: https://bugs.chromium.org/p/chromium/issues/detail?id=798223\n function transformDirection(a, b) {\n return options.dir ? 100 - a - b : a;\n }\n // Updates scope_Locations and scope_Values, updates visual state\n function updateHandlePosition(handleNumber, to) {\n // Update locations.\n scope_Locations[handleNumber] = to;\n // Convert the value to the slider stepping/range.\n scope_Values[handleNumber] = scope_Spectrum.fromStepping(to);\n var translation = transformDirection(to, 0) - scope_DirOffset;\n var translateRule = \"translate(\" + inRuleOrder(translation + \"%\", \"0\") + \")\";\n scope_Handles[handleNumber].style[options.transformRule] = translateRule;\n // sanity check for at least 2 handles (e.g. during setup)\n if (options.events.invertConnects && scope_Locations.length > 1) {\n // check if handles passed each other, but don't match the ConnectsInverted state\n var handlesAreInOrder = scope_Locations.every(function (position, index, locations) {\n return index === 0 || position >= locations[index - 1];\n });\n if (scope_ConnectsInverted !== !handlesAreInOrder) {\n // invert connects when handles pass each other\n invertConnects();\n // invertConnects already updates all connect elements\n return;\n }\n }\n updateConnect(handleNumber);\n updateConnect(handleNumber + 1);\n if (scope_ConnectsInverted) {\n // When connects are inverted, we also have to update adjacent connects\n updateConnect(handleNumber - 1);\n updateConnect(handleNumber + 2);\n }\n }\n // Handles before the slider middle are stacked later = higher,\n // Handles after the middle later is lower\n // [[7] [8] .......... | .......... [5] [4]\n function setZindex() {\n scope_HandleNumbers.forEach(function (handleNumber) {\n var dir = scope_Locations[handleNumber] > 50 ? -1 : 1;\n var zIndex = 3 + (scope_Handles.length + dir * handleNumber);\n scope_Handles[handleNumber].style.zIndex = String(zIndex);\n });\n }\n // Test suggested values and apply margin, step.\n // if exactInput is true, don't run checkHandlePosition, then the handle can be placed in between steps (#436)\n function setHandle(handleNumber, to, lookBackward, lookForward, exactInput, smoothSteps) {\n if (!exactInput) {\n to = checkHandlePosition(scope_Locations, handleNumber, to, lookBackward, lookForward, false, smoothSteps);\n }\n if (to === false) {\n return false;\n }\n updateHandlePosition(handleNumber, to);\n return true;\n }\n // Updates style attribute for connect nodes\n function updateConnect(index) {\n // Skip connects set to false\n if (!scope_Connects[index]) {\n return;\n }\n // Create a copy of locations, so we can sort them for the local scope logic\n var locations = scope_Locations.slice();\n if (scope_ConnectsInverted) {\n locations.sort(function (a, b) {\n return a - b;\n });\n }\n var l = 0;\n var h = 100;\n if (index !== 0) {\n l = locations[index - 1];\n }\n if (index !== scope_Connects.length - 1) {\n h = locations[index];\n }\n // We use two rules:\n // 'translate' to change the left/top offset;\n // 'scale' to change the width of the element;\n // As the element has a width of 100%, a translation of 100% is equal to 100% of the parent (.noUi-base)\n var connectWidth = h - l;\n var translateRule = \"translate(\" + inRuleOrder(transformDirection(l, connectWidth) + \"%\", \"0\") + \")\";\n var scaleRule = \"scale(\" + inRuleOrder(connectWidth / 100, \"1\") + \")\";\n scope_Connects[index].style[options.transformRule] =\n translateRule + \" \" + scaleRule;\n }\n // Parses value passed to .set method. Returns current value if not parse-able.\n function resolveToValue(to, handleNumber) {\n // Setting with null indicates an 'ignore'.\n // Inputting 'false' is invalid.\n if (to === null || to === false || to === undefined) {\n return scope_Locations[handleNumber];\n }\n // If a formatted number was passed, attempt to decode it.\n if (typeof to === \"number\") {\n to = String(to);\n }\n to = options.format.from(to);\n if (to !== false) {\n to = scope_Spectrum.toStepping(to);\n }\n // If parsing the number failed, use the current value.\n if (to === false || isNaN(to)) {\n return scope_Locations[handleNumber];\n }\n return to;\n }\n // Set the slider value.\n function valueSet(input, fireSetEvent, exactInput) {\n var values = asArray(input);\n var isInit = scope_Locations[0] === undefined;\n // Event fires by default\n fireSetEvent = fireSetEvent === undefined ? true : fireSetEvent;\n // Animation is optional.\n // Make sure the initial values were set before using animated placement.\n if (options.animate && !isInit) {\n addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration);\n }\n // First pass, without lookAhead but with lookBackward. Values are set from left to right.\n scope_HandleNumbers.forEach(function (handleNumber) {\n setHandle(handleNumber, resolveToValue(values[handleNumber], handleNumber), true, false, exactInput);\n });\n var i = scope_HandleNumbers.length === 1 ? 0 : 1;\n // Spread handles evenly across the slider if the range has no size (min=max)\n if (isInit && scope_Spectrum.hasNoSize()) {\n exactInput = true;\n scope_Locations[0] = 0;\n if (scope_HandleNumbers.length > 1) {\n var space_1 = 100 / (scope_HandleNumbers.length - 1);\n scope_HandleNumbers.forEach(function (handleNumber) {\n scope_Locations[handleNumber] = handleNumber * space_1;\n });\n }\n }\n // Secondary passes. Now that all base values are set, apply constraints.\n // Iterate all handles to ensure constraints are applied for the entire slider (Issue #1009)\n for (; i < scope_HandleNumbers.length; ++i) {\n scope_HandleNumbers.forEach(function (handleNumber) {\n setHandle(handleNumber, scope_Locations[handleNumber], true, true, exactInput);\n });\n }\n setZindex();\n scope_HandleNumbers.forEach(function (handleNumber) {\n fireEvent(\"update\", handleNumber);\n // Fire the event only for handles that received a new value, as per #579\n if (values[handleNumber] !== null && fireSetEvent) {\n fireEvent(\"set\", handleNumber);\n }\n });\n }\n // Reset slider to initial values\n function valueReset(fireSetEvent) {\n valueSet(options.start, fireSetEvent);\n }\n // Set value for a single handle\n function valueSetHandle(handleNumber, value, fireSetEvent, exactInput) {\n // Ensure numeric input\n handleNumber = Number(handleNumber);\n if (!(handleNumber >= 0 && handleNumber < scope_HandleNumbers.length)) {\n throw new Error(\"noUiSlider: invalid handle number, got: \" + handleNumber);\n }\n // Look both backward and forward, since we don't want this handle to \"push\" other handles (#960);\n // The exactInput argument can be used to ignore slider stepping (#436)\n setHandle(handleNumber, resolveToValue(value, handleNumber), true, true, exactInput);\n fireEvent(\"update\", handleNumber);\n if (fireSetEvent) {\n fireEvent(\"set\", handleNumber);\n }\n }\n // Get the slider value.\n function valueGet(unencoded) {\n if (unencoded === void 0) { unencoded = false; }\n if (unencoded) {\n // return a copy of the raw values\n return scope_Values.length === 1 ? scope_Values[0] : scope_Values.slice(0);\n }\n var values = scope_Values.map(options.format.to);\n // If only one handle is used, return a single value.\n if (values.length === 1) {\n return values[0];\n }\n return values;\n }\n // Removes classes from the root and empties it.\n function destroy() {\n // remove protected internal listeners\n removeEvent(INTERNAL_EVENT_NS.aria);\n removeEvent(INTERNAL_EVENT_NS.tooltips);\n Object.keys(options.cssClasses).forEach(function (key) {\n removeClass(scope_Target, options.cssClasses[key]);\n });\n while (scope_Target.firstChild) {\n scope_Target.removeChild(scope_Target.firstChild);\n }\n delete scope_Target.noUiSlider;\n }\n function getNextStepsForHandle(handleNumber) {\n var location = scope_Locations[handleNumber];\n var nearbySteps = scope_Spectrum.getNearbySteps(location);\n var value = scope_Values[handleNumber];\n var increment = nearbySteps.thisStep.step;\n var decrement = null;\n // If snapped, directly use defined step value\n if (options.snap) {\n return [\n value - nearbySteps.stepBefore.startValue || null,\n nearbySteps.stepAfter.startValue - value || null,\n ];\n }\n // If the next value in this step moves into the next step,\n // the increment is the start of the next step - the current value\n if (increment !== false) {\n if (value + increment > nearbySteps.stepAfter.startValue) {\n increment = nearbySteps.stepAfter.startValue - value;\n }\n }\n // If the value is beyond the starting point\n if (value > nearbySteps.thisStep.startValue) {\n decrement = nearbySteps.thisStep.step;\n }\n else if (nearbySteps.stepBefore.step === false) {\n decrement = false;\n }\n // If a handle is at the start of a step, it always steps back into the previous step first\n else {\n decrement = value - nearbySteps.stepBefore.highestStep;\n }\n // Now, if at the slider edges, there is no in/decrement\n if (location === 100) {\n increment = null;\n }\n else if (location === 0) {\n decrement = null;\n }\n // As per #391, the comparison for the decrement step can have some rounding issues.\n var stepDecimals = scope_Spectrum.countStepDecimals();\n // Round per #391\n if (increment !== null && increment !== false) {\n increment = Number(increment.toFixed(stepDecimals));\n }\n if (decrement !== null && decrement !== false) {\n decrement = Number(decrement.toFixed(stepDecimals));\n }\n return [decrement, increment];\n }\n // Get the current step size for the slider.\n function getNextSteps() {\n return scope_HandleNumbers.map(getNextStepsForHandle);\n }\n // Updatable: margin, limit, padding, step, range, animate, snap\n function updateOptions(optionsToUpdate, fireSetEvent) {\n // Spectrum is created using the range, snap, direction and step options.\n // 'snap' and 'step' can be updated.\n // If 'snap' and 'step' are not passed, they should remain unchanged.\n var v = valueGet();\n var updateAble = [\n \"margin\",\n \"limit\",\n \"padding\",\n \"range\",\n \"animate\",\n \"snap\",\n \"step\",\n \"format\",\n \"pips\",\n \"tooltips\",\n \"connect\",\n ];\n // Only change options that we're actually passed to update.\n updateAble.forEach(function (name) {\n // Check for undefined. null removes the value.\n if (optionsToUpdate[name] !== undefined) {\n originalOptions[name] = optionsToUpdate[name];\n }\n });\n var newOptions = testOptions(originalOptions);\n // Load new options into the slider state\n updateAble.forEach(function (name) {\n if (optionsToUpdate[name] !== undefined) {\n options[name] = newOptions[name];\n }\n });\n scope_Spectrum = newOptions.spectrum;\n // Limit, margin and padding depend on the spectrum but are stored outside of it. (#677)\n options.margin = newOptions.margin;\n options.limit = newOptions.limit;\n options.padding = newOptions.padding;\n // Update pips, removes existing.\n if (options.pips) {\n pips(options.pips);\n }\n else {\n removePips();\n }\n // Update tooltips, removes existing.\n if (options.tooltips) {\n tooltips();\n }\n else {\n removeTooltips();\n }\n // Invalidate the current positioning so valueSet forces an update.\n scope_Locations = [];\n valueSet(isSet(optionsToUpdate.start) ? optionsToUpdate.start : v, fireSetEvent);\n // Update connects only if it was set\n if (optionsToUpdate.connect) {\n updateConnectOption();\n }\n }\n function updateConnectOption() {\n // IE supported way of removing children including event handlers\n while (scope_ConnectBase.firstChild) {\n scope_ConnectBase.removeChild(scope_ConnectBase.firstChild);\n }\n // Adding new connects according to the new connect options\n for (var i = 0; i <= options.handles; i++) {\n scope_Connects[i] = addConnect(scope_ConnectBase, options.connect[i]);\n updateConnect(i);\n }\n // re-adding drag events for the new connect elements\n // to ignore the other events we have to negate the 'if (!behaviour.fixed)' check\n bindSliderEvents({ drag: options.events.drag, fixed: true });\n }\n // Invert options for connect handles\n function invertConnects() {\n scope_ConnectsInverted = !scope_ConnectsInverted;\n testConnect(options, \n // inverse the connect boolean array\n options.connect.map(function (b) { return !b; }));\n updateConnectOption();\n }\n // Initialization steps\n function setupSlider() {\n // Create the base element, initialize HTML and set classes.\n // Add handles and connect elements.\n scope_Base = addSlider(scope_Target);\n addElements(options.connect, scope_Base);\n // Attach user events.\n bindSliderEvents(options.events);\n // Use the public value method to set the start values.\n valueSet(options.start);\n if (options.pips) {\n pips(options.pips);\n }\n if (options.tooltips) {\n tooltips();\n }\n aria();\n }\n setupSlider();\n var scope_Self = {\n destroy: destroy,\n steps: getNextSteps,\n on: bindEvent,\n off: removeEvent,\n get: valueGet,\n set: valueSet,\n setHandle: valueSetHandle,\n reset: valueReset,\n disable: disable,\n enable: enable,\n // Exposed for unit testing, don't use this in your application.\n __moveHandles: function (upward, proposal, handleNumbers) {\n moveHandles(upward, proposal, scope_Locations, handleNumbers);\n },\n options: originalOptions,\n updateOptions: updateOptions,\n target: scope_Target,\n removePips: removePips,\n removeTooltips: removeTooltips,\n getPositions: function () {\n return scope_Locations.slice();\n },\n getTooltips: function () {\n return scope_Tooltips;\n },\n getOrigins: function () {\n return scope_Handles;\n },\n pips: pips, // Issue #594\n };\n return scope_Self;\n}\n// Run the standard initializer\nfunction initialize(target, originalOptions) {\n if (!target || !target.nodeName) {\n throw new Error(\"noUiSlider: create requires a single element, got: \" + target);\n }\n // Throw an error if the slider was already initialized.\n if (target.noUiSlider) {\n throw new Error(\"noUiSlider: Slider was already initialized.\");\n }\n // Test the options and create the slider environment;\n var options = testOptions(originalOptions);\n var api = scope(target, options, originalOptions);\n target.noUiSlider = api;\n return api;\n}\nexport { initialize as create };\nexport { cssClasses };\nexport default {\n // Exposed for unit testing, don't use this in your application.\n __spectrum: Spectrum,\n // A reference to the default classes, allows global changes.\n // Use the cssClasses option for changes to one slider.\n cssClasses: cssClasses,\n create: initialize,\n};\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","jQuery","S2","fn","select2","amd","requirejs","require","define","undef","main","req","makeMap","handlers","defined","waiting","config","defining","hasOwn","Object","prototype","hasOwnProperty","aps","slice","jsSuffixRegExp","hasProp","obj","prop","call","normalize","name","baseName","nameParts","nameSegment","mapValue","foundMap","lastIndex","foundI","foundStarMap","starI","i","j","part","baseParts","split","map","starMap","length","nodeIdCompat","test","replace","charAt","concat","splice","join","makeRequire","relName","forceSync","args","arguments","apply","makeNormalize","makeLoad","depName","value","callDep","Error","splitPrefix","prefix","index","indexOf","substring","makeRelParts","makeConfig","relParts","plugin","parts","relResourceName","f","n","pr","p","exports","e","uri","deps","callback","cjsModule","ret","usingExports","callbackType","load","undefined","alt","setTimeout","cfg","_defined","_$","$","console","error","Utils","getMethods","theClass","proto","methods","methodName","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","this","constructor","key","__super__","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","unshift","Array","argCount","calledConstructor","ctr","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","__cache","GetUniqueElementId","element","select2Id","getAttribute","setAttribute","StoreData","GetData","RemoveData","removeAttribute","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","inArray","showLoading","loading","disabled","text","loadingMore","$loading","prepend","document","createElement","attrs","matches","window","Element","msMatchesSelector","webkitMatchesSelector","_resultId","title","role","val","label","template","$children","c","child","$child","$childrenContainer","container","$container","isOpen","removeAttr","$highlighted","getHighlightedResults","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","_detachCloseHandler","activeElement","contains","body","$select","target","closest","off","isEnabled","isDisabled","SingleSelection","html","$rendered","selectionContainer","selection","formatted","MultipleSelection","parent","$selections","Placeholder","decorated","placeholder","normalizePlaceholder","_","createPlaceholder","$placeholder","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","$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","addOptions","textContent","innerText","normalizedData","_normalizeItem","defaults","matcher","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","replaceWith","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","q","transport","success","failure","$request","ajax","then","fail","_request","isFunction","abort","request","isArray","status","url","delay","_queryTimeout","clearTimeout","Tags","tags","createTag","insertTag","t","tag","wrapper","checkChildren","toUpperCase","_removeOldTags","page","trim","Tokenizer","tokenizer","dropdown","createAndSelect","tokenData","separators","termChar","MinimumInputLength","$e","minimumInputLength","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","maximumSelectionLength","_checkIfMaximumSelected","successCallback","count","Dropdown","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","isLoadMoreVisible","documentElement","loadMore","pagination","more","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","detach","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","parents","x","scrollLeft","y","ev","$window","isCurrentlyAbove","hasClass","isCurrentlyBelow","newDirection","viewport","enoughRoomAbove","enoughRoomBelow","left","$offsetParent","offsetParent","parentOffset","isConnected","outerWidth","minWidth","appendTo","countResults","MinimumResultsForSearch","minimumResultsForSearch","Infinity","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","ctrlKey","metaKey","errorLoading","inputTooLong","overChars","inputTooShort","maximumSelected","noResults","searching","removeAllItems","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","_resolveLanguage","uniqueLanguages","l","_processTranslations","debug","stripDiacritics","a","original","amdLanguageBase","dropdownAutoWidth","scrollAfterSelect","templateResult","templateSelection","theme","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","isEmptyObject","isPlainObject","resolvedLanguages","baseLanguage","languageData","ex","warn","set","camelCase","convertedData","Options","fromElement","InputCompat","excludedData","dir","dataset","upperCaseLetter","letter","attributes","attributeName","dataName","dataValue","Select2","_generateId","tabindex","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","insertAfter","_resolveWidth","method","WIDTH","styleWidth","elementWidth","getComputedStyle","_syncA","_syncS","_syncSubtree","attachEvent","observer","MutationObserver","WebKitMutationObserver","MozMutationObserver","_observer","mutations","observe","childList","subtree","addEventListener","nonRelayEvents","toggleDropdown","focus","altKey","close","open","_isChangeMutation","changed","nodeName","addedNodes","removedNodes","mutation","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","hasFocus","enable","newVal","detachEvent","disconnect","removeEventListener","removeData","thisMethods","instanceOptions","instance","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","_objectSpread2","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_typeof","Symbol","iterator","configurable","writable","_extends","assign","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","userAgent","pattern","navigator","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","selector","getParentOrHost","host","nodeType","parentNode","ctx","includeCTX","_throttleTimeout","R_SPACE","toggleClass","state","classList","defaultView","currentStyle","matrix","selfOnly","appliedTransforms","transform","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","tagName","list","getElementsByTagName","getWindowScrollingElement","scrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","getBoundingClientRect","elRect","right","containerRect","parseInt","elMatrix","scaleX","scaleY","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","includeDragEl","currentChild","Sortable","ghost","dragged","draggable","lastChild","last","lastElementChild","previousElementSibling","clone","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","includeSelf","elem","gotSelf","clientWidth","clientHeight","elemCSS","isRectEqual","rect1","rect2","round","throttle","ms","scrollBy","Polymer","Zepto","dom","cloneNode","getChildContainingRectFromElement","ghostEl","rect","from","_rect$left","_rect$top","_rect$right","_rect$bottom","animated","childRect","min","max","expando","Date","getTime","AnimationStateManager","animationCallbackId","animationStates","captureAnimationState","animation","fromRect","thisAnimationDuration","childMatrix","addAnimationState","removeAnimationState","arr","Number","indexOfObject","animateAll","_this","animating","animationTime","time","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","sqrt","pow","calculateRealTime","animate","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","forRepaintDummy","offsetWidth","repaint","easing","plugins","initializeByDefault","PluginManager","mount","pluginName","pluginEvent","eventName","sortable","eventCanceled","cancel","eventNameGlobal","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","dispatchEvent","_ref","rootEl","targetEl","cloneEl","toEl","fromEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","putSortable","extraEventProperties","onName","CustomEvent","createEvent","initEvent","bubbles","cancelable","to","pullMode","lastPutMode","allEventProperties","_excluded","dragEl","parentEl","nextEl","lastDownEl","cloneHidden","dragStarted","moved","activeSortable","active","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","info","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","cssText","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","touchingSideChild2","_prepareGroup","toFn","pull","sameGroup","group","otherGroup","originalGroup","checkPull","checkPut","put","revertClone","stopImmediatePropagation","nearestEmptyInsertDetectEvent","touches","nearest","clientX","clientY","some","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","store","handle","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","setData","dataTransfer","dropBubble","dragoverBubble","dataIdAttr","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","str","src","href","sum","charCodeAt","_nextTick","_cancelNextTick","_getDirection","touch","pointerType","originalTarget","shadowRoot","composedPath","root","inputs","idx","checked","_saveInputCheckedState","button","isContentEditable","criteria","_prepareDragStart","dragStartFn","ownerDocument","nextSibling","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","abs","_onTouchMove","_onDragStart","getSelection","removeAllRanges","err","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","ghostMatrix","relativeScrollOffset","dx","dy","b","cssMatrix","appendChild","_hideClone","cloneId","insertBefore","_loopId","setInterval","effectAllowed","_dragStartId","revert","vertical","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","lastElRect","childContainingRect","spacer","_ghostIsLast","firstElRect","_ghostIsFirst","firstChild","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","_getSwapDirection","dragIndex","nextElementSibling","after","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","removeChild","save","handleEvent","dropEffect","_globalDragOver","toArray","order","useAnimation","items","querySelectorAll","utils","dst","nextTick","cancelNextTick","detectDirection","_len","_key","create","version","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","pid","clearPointerElemChangedInterval","isFallback","scroll","scrollCustomFn","sens","scrollSensitivity","speed","scrollSpeed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","bubbleScroll","drop","toSortable","changedTouches","onSpill","Revert","Remove","startIndex","dragStart","_ref2","_ref3","_ref4","parentSortable","AutoScroll","forceAutoScrollFallback","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","nulling","ogElemScroller","newElem","PipsMode","PipsType","isValidPartialFormatter","entry","removeElement","parentElement","isSet","isNumeric","isNaN","isFinite","addClassFor","limit","asArray","countDecimals","numStr","pieces","RegExp","getPageOffset","doc","supportPageOffset","pageXOffset","isCSS1Compat","compatMode","pageYOffset","subRangeRatio","pa","pb","fromPercentage","range","startRange","getJ","toStepping","xVal","xPct","va","vb","toPercentage","getStep","xSteps","snap","Spectrum","singleStep","xNumSteps","xHighestCompleteStep","ordered","handleEntryPoint","handleStepPoint","getDistance","distances","getAbsoluteDistance","start_factor","xPct_index","rest_factor","rest_rel_distance","range_pct","rel_range_distance","abs_distance_counter","range_counter","fromStepping","isPercentage","getDefaultStep","isDown","size","getNearbySteps","stepBefore","startValue","step","highestStep","thisStep","stepAfter","countStepDecimals","stepDecimals","hasNoSize","convert","percentage","parseFloat","value1","totalSteps","ceil","toFixed","defaultFormatter","cssClasses","base","origin","handleLower","handleUpper","touchArea","horizontal","background","connect","connects","ltr","rtl","textDirectionLtr","textDirectionRtl","drag","tap","tooltip","pips","pipsHorizontal","pipsVertical","marker","markerHorizontal","markerVertical","markerNormal","markerLarge","markerSub","valueHorizontal","valueVertical","valueNormal","valueLarge","valueSub","INTERNAL_EVENT_NS","tooltips","aria","testStep","parsed","testKeyboardPageMultiplier","keyboardPageMultiplier","testKeyboardMultiplier","keyboardMultiplier","testKeyboardDefaultStep","keyboardDefaultStep","testRange","spectrum","testStart","handles","start","testSnap","testAnimate","testAnimationDuration","animationDuration","testConnect","testOrientation","ort","testMargin","margin","testLimit","testPadding","padding","totalPadding","firstValue","testDirection","testBehaviour","fixed","hover","unconstrained","invertConnects","dragAll","smoothSteps","events","testTooltips","formatter","testHandleAttributes","handleAttributes","testAriaFormat","ariaFormat","testFormat","isValidFormatter","format","testKeyboardSupport","keyboardSupport","testDocumentElement","testCssPrefix","cssPrefix","testCssClasses","testOptions","tests","r","orientation","behaviour","msPrefix","msTransform","noPrefix","transformRule","scope","originalOptions","scope_Base","scope_ConnectBase","scope_Handles","scope_Connects","scope_Pips","scope_Tooltips","addTarget","actions","pointerEnabled","move","end","msPointerEnabled","supportsPassive","CSS","supports","opts","getSupportsPassive","scope_Target","scope_Spectrum","scope_Values","scope_Locations","scope_HandleNumbers","scope_ActiveHandlesCount","scope_Events","scope_ConnectsInverted","scope_Document","scope_DocumentElement","scope_Body","scope_DirOffset","addNodeTo","div","addOrigin","handleNumber","isSliderDisabled","isHandleDisabled","horizontalKeys","verticalKeys","largeStepKeys","edgeKeys","reverse","isLargeDown","isLargeUp","isUp","isMin","isMax","getNextStepsForHandle","setHandle","fireEvent","eventKeydown","attributes_1","attribute","addConnect","addTooltip","hasAttribute","removeTooltips","removeEvent","bindEvent","values","unencoded","formattedValue","mapToRange","stepped","generateSpread","array","mode","Range","Steps","Count","interval","spread","Positions","Values","getGroup","indexes","firstInRange","lastInRange","ignoreFirst","ignoreLast","prevPct","newPct","pctDifference","pctPos","steps","realSteps","stepSize","low","high","isSteps","density","LargeValue","SmallValue","NoValue","addMarking","filterFunc","_a","_b","valueSizeClasses","None","markerSizeClasses","valueOrientationClasses","markerOrientationClasses","getClasses","sizeClasses","addSpread","removePips","baseSize","pageOffset","eventTarget","mouse","pointer","buttons","isTouchOnTarget","checkTouch","composed","shift","targetTouches","pageX","pageY","targetTouch","points","cursor","fixEvent","doNotReject","calcPoint","calcPointToPercentage","docElem","proposal","clientTop","clientLeft","documentLeave","relatedTarget","eventEnd","eventMove","appVersion","buttonsProperty","movement","startCalcPoint","moveHandles","locations","handleNumbers","setZindex","eventStart","moveEvent","endEvent","outEvent","eventTap","clickedPosition","smallestDifference","handlePosition","differenceWithThisHandle","getClosestHandle","eventHover","targetEvent","scope_Self","bindSliderEvents","handleBefore","handleAfter","eventHolders","handlesToDrag","handleNumbersToDrag","eventHolder","namespacedEvent","namespace","tEvent","tNamespace","isInternalNamespace","eventType","checkHandlePosition","reference","lookBackward","lookForward","getValue","distance","inRuleOrder","v","o","upward","proposals","firstHandle","transformDirection","updateHandlePosition","translateRule","handlesAreInOrder","every","updateConnectOption","updateConnect","zIndex","exactInput","h","connectWidth","scaleRule","resolveToValue","valueSet","fireSetEvent","isInit","space_1","valueGet","location","nearbySteps","increment","decrement","connectOptions","addElements","positions","now","noUiSlider","disable","__moveHandles","updateOptions","optionsToUpdate","updateAble","newOptions","getPositions","getTooltips","getOrigins","__spectrum","api"],"sourceRoot":""}