├── .gitignore ├── LICENSE ├── README.md ├── contrib ├── nginx.conf └── webjournal.service ├── requirements.txt ├── screenshot.png ├── web ├── index.html └── static │ ├── css │ ├── bootstrap.css │ ├── bootstrap.min.css │ ├── select2.css │ └── select2.min.css │ └── js │ ├── bootstrap.min.js │ ├── jquery.min.js │ ├── select2.full.js │ ├── select2.full.min.js │ ├── select2.js │ └── select2.min.js └── webjournal.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | 27 | # PyInstaller 28 | # Usually these files are written by a python script from a template 29 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 30 | *.manifest 31 | *.spec 32 | 33 | # Installer logs 34 | pip-log.txt 35 | pip-delete-this-directory.txt 36 | 37 | # Unit test / coverage reports 38 | htmlcov/ 39 | .tox/ 40 | .coverage 41 | .coverage.* 42 | .cache 43 | nosetests.xml 44 | coverage.xml 45 | *,cover 46 | .hypothesis/ 47 | 48 | # Translations 49 | *.mo 50 | *.pot 51 | 52 | # Django stuff: 53 | *.log 54 | local_settings.py 55 | 56 | # Flask stuff: 57 | instance/ 58 | .webassets-cache 59 | 60 | # Scrapy stuff: 61 | .scrapy 62 | 63 | # Sphinx documentation 64 | docs/_build/ 65 | 66 | # PyBuilder 67 | target/ 68 | 69 | # IPython Notebook 70 | .ipynb_checkpoints 71 | 72 | # pyenv 73 | .python-version 74 | 75 | # celery beat schedule file 76 | celerybeat-schedule 77 | 78 | # dotenv 79 | .env 80 | 81 | # virtualenv 82 | venv/ 83 | ENV/ 84 | 85 | # Spyder project settings 86 | .spyderproject 87 | 88 | # Rope project settings 89 | .ropeproject 90 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # journal 2 | 3 | journald => web gateway 4 | 5 | ## Attention! 6 | 7 | It's not really good python code. I think this code is ugly. Don't use it , okay? (but of course you can) 8 | This is just PoC project! 9 | 10 | ![](https://github.com/skob/journal/blob/master/screenshot.png "") 11 | 12 | This project based on tornado, system-journald python module, bootstrap and select2. Big thanks to many (or maybe to all) users of SO for your help :-) 13 | 14 | ### options 15 | - `directory` -- for set local/remote journal directory 16 | - `ipaddr` -- default `localhost` 17 | - `port` -- default `8888` 18 | - `UNITS-RE` -- filter options for systemd units 19 | 20 | ### web 21 | You can view almost live logs and filter its by priority and systemd units. 22 | In case of multi-host journald installation (`man systemd-journal-remote`) you can also filter logs by hostnames. 23 | 24 | ### Yes I know this 25 | * Yes, you can use `systemd-journal-gatewayd` instead 26 | * ~~Yes, I use too old systemd python library maybe (this is Centos choice)~~ 27 | * Yes, feel free to open pull requests 28 | * Yes, you can't just "download and run". This is PoC project, right? 29 | * From docs: 30 | > Note that in order to access the system journal, a non-root user must have the necessary privileges, see journalctl(1) for details. Unprivileged users can access only their own journal 31 | -------------------------------------------------------------------------------- /contrib/nginx.conf: -------------------------------------------------------------------------------- 1 | upstream webjournal { 2 | server 127.0.0.1:8888; 3 | } 4 | 5 | server { 6 | listen 80 ; 7 | charset utf-8; 8 | 9 | access_log /var/log/nginx/webjournal.access.log; 10 | 11 | location / { 12 | proxy_pass http://webjournal; 13 | proxy_http_version 1.1; 14 | proxy_set_header Connection ""; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /contrib/webjournal.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Journald online reader 3 | After=network.target 4 | 5 | [Service] 6 | User=systemd-journal-remote 7 | Group=systemd-journal-remote 8 | LimitNOFILE=65536 9 | Environment="VIRTUAL_ENV=/opt/journal" "PATH=/opt/journal/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" 10 | WorkingDirectory=/opt/journal 11 | PrivateTmp=yes 12 | PrivateDevices=yes 13 | ProtectHome=yes 14 | ProtectSystem=full 15 | ExecStart=/opt/journal/bin/python2 /opt/journal/webjournal.py --directory=/var/log/journal/remote 16 | KillMode=control-group 17 | Restart=on-failure 18 | 19 | [Install] 20 | WantedBy=multi-user.target 21 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | backports-abc==0.5 2 | backports.ssl-match-hostname==3.5.0.1 3 | singledispatch==3.4.0.3 4 | six==1.10.0 5 | systemd-python==233 6 | tornado==4.4.2 7 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skob/journal/c06219c64f0623ecb445005df592edc8da22fec7/screenshot.png -------------------------------------------------------------------------------- /web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Journalctl Online 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 |

Journal

15 |
16 | 17 | 18 | 21 | 24 | 27 | 28 |
29 |
30 |
31 |
32 | 218 | 219 | 220 | -------------------------------------------------------------------------------- /web/static/css/select2.css: -------------------------------------------------------------------------------- 1 | .select2-container { 2 | box-sizing: border-box; 3 | display: inline-block; 4 | margin: 0; 5 | position: relative; 6 | vertical-align: middle 7 | } 8 | 9 | .select2-container .select2-selection--single { 10 | box-sizing: border-box; 11 | cursor: pointer; 12 | display: block; 13 | height: 28px; 14 | user-select: none; 15 | -webkit-user-select: none 16 | } 17 | 18 | .select2-container .select2-selection--single .select2-selection__rendered { 19 | display: block; 20 | padding-left: 8px; 21 | padding-right: 20px; 22 | overflow: hidden; 23 | text-overflow: ellipsis; 24 | white-space: nowrap 25 | } 26 | 27 | .select2-container .select2-selection--single .select2-selection__clear { 28 | position: relative 29 | } 30 | 31 | .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { 32 | padding-right: 8px; 33 | padding-left: 20px 34 | } 35 | 36 | .select2-container .select2-selection--multiple { 37 | box-sizing: border-box; 38 | cursor: pointer; 39 | display: block; 40 | min-height: 32px; 41 | user-select: none; 42 | -webkit-user-select: none 43 | } 44 | 45 | .select2-container .select2-selection--multiple .select2-selection__rendered { 46 | display: inline-block; 47 | overflow: hidden; 48 | padding-left: 8px; 49 | text-overflow: ellipsis; 50 | white-space: nowrap 51 | } 52 | 53 | .select2-container .select2-search--inline { 54 | float: left 55 | } 56 | 57 | .select2-container .select2-search--inline .select2-search__field { 58 | box-sizing: border-box; 59 | border: none; 60 | font-size: 100%; 61 | margin-top: 5px; 62 | padding: 0 63 | } 64 | 65 | .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { 66 | -webkit-appearance: none 67 | } 68 | 69 | .select2-dropdown { 70 | background-color: white; 71 | border: 1px solid #aaa; 72 | border-radius: 4px; 73 | box-sizing: border-box; 74 | display: block; 75 | position: absolute; 76 | left: -100000px; 77 | width: 100%; 78 | z-index: 1051 79 | } 80 | 81 | .select2-results { 82 | display: block 83 | } 84 | 85 | .select2-results__options { 86 | list-style: none; 87 | margin: 0; 88 | padding: 0 89 | } 90 | 91 | .select2-results__option { 92 | padding: 6px; 93 | user-select: none; 94 | -webkit-user-select: none 95 | } 96 | 97 | .select2-results__option[aria-selected] { 98 | cursor: pointer 99 | } 100 | 101 | .select2-container--open .select2-dropdown { 102 | left: 0 103 | } 104 | 105 | .select2-container--open .select2-dropdown--above { 106 | border-bottom: none; 107 | border-bottom-left-radius: 0; 108 | border-bottom-right-radius: 0 109 | } 110 | 111 | .select2-container--open .select2-dropdown--below { 112 | border-top: none; 113 | border-top-left-radius: 0; 114 | border-top-right-radius: 0 115 | } 116 | 117 | .select2-search--dropdown { 118 | display: block; 119 | padding: 4px 120 | } 121 | 122 | .select2-search--dropdown .select2-search__field { 123 | padding: 4px; 124 | width: 100%; 125 | box-sizing: border-box 126 | } 127 | 128 | .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { 129 | -webkit-appearance: none 130 | } 131 | 132 | .select2-search--dropdown.select2-search--hide { 133 | display: none 134 | } 135 | 136 | .select2-close-mask { 137 | border: 0; 138 | margin: 0; 139 | padding: 0; 140 | display: block; 141 | position: fixed; 142 | left: 0; 143 | top: 0; 144 | min-height: 100%; 145 | min-width: 100%; 146 | height: auto; 147 | width: auto; 148 | opacity: 0; 149 | z-index: 99; 150 | background-color: #fff; 151 | filter: alpha(opacity=0) 152 | } 153 | 154 | .select2-hidden-accessible { 155 | border: 0 !important; 156 | clip: rect(0 0 0 0) !important; 157 | height: 1px !important; 158 | margin: -1px !important; 159 | overflow: hidden !important; 160 | padding: 0 !important; 161 | position: absolute !important; 162 | width: 1px !important 163 | } 164 | 165 | .select2-container--default .select2-selection--single { 166 | background-color: #fff; 167 | border: 1px solid #aaa; 168 | border-radius: 4px 169 | } 170 | 171 | .select2-container--default .select2-selection--single .select2-selection__rendered { 172 | color: #444; 173 | line-height: 28px 174 | } 175 | 176 | .select2-container--default .select2-selection--single .select2-selection__clear { 177 | cursor: pointer; 178 | float: right; 179 | font-weight: bold 180 | } 181 | 182 | .select2-container--default .select2-selection--single .select2-selection__placeholder { 183 | color: #999 184 | } 185 | 186 | .select2-container--default .select2-selection--single .select2-selection__arrow { 187 | height: 26px; 188 | position: absolute; 189 | top: 1px; 190 | right: 1px; 191 | width: 20px 192 | } 193 | 194 | .select2-container--default .select2-selection--single .select2-selection__arrow b { 195 | border-color: #888 transparent transparent transparent; 196 | border-style: solid; 197 | border-width: 5px 4px 0 4px; 198 | height: 0; 199 | left: 50%; 200 | margin-left: -4px; 201 | margin-top: -2px; 202 | position: absolute; 203 | top: 50%; 204 | width: 0 205 | } 206 | 207 | .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { 208 | float: left 209 | } 210 | 211 | .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { 212 | left: 1px; 213 | right: auto 214 | } 215 | 216 | .select2-container--default.select2-container--disabled .select2-selection--single { 217 | background-color: #eee; 218 | cursor: default 219 | } 220 | 221 | .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { 222 | display: none 223 | } 224 | 225 | .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { 226 | border-color: transparent transparent #888 transparent; 227 | border-width: 0 4px 5px 4px 228 | } 229 | 230 | .select2-container--default .select2-selection--multiple { 231 | background-color: white; 232 | border: 1px solid #aaa; 233 | border-radius: 4px; 234 | cursor: text 235 | } 236 | 237 | .select2-container--default .select2-selection--multiple .select2-selection__rendered { 238 | box-sizing: border-box; 239 | list-style: none; 240 | margin: 0; 241 | padding: 0 5px; 242 | width: 100% 243 | } 244 | 245 | .select2-container--default .select2-selection--multiple .select2-selection__rendered li { 246 | list-style: none 247 | } 248 | 249 | .select2-container--default .select2-selection--multiple .select2-selection__placeholder { 250 | color: #999; 251 | margin-top: 5px; 252 | float: left 253 | } 254 | 255 | .select2-container--default .select2-selection--multiple .select2-selection__clear { 256 | cursor: pointer; 257 | float: right; 258 | font-weight: bold; 259 | margin-top: 5px; 260 | margin-right: 10px 261 | } 262 | 263 | .select2-container--default .select2-selection--multiple .select2-selection__choice { 264 | background-color: #e4e4e4; 265 | border: 1px solid #aaa; 266 | border-radius: 4px; 267 | cursor: default; 268 | float: left; 269 | margin-right: 5px; 270 | margin-top: 5px; 271 | padding: 0 5px 272 | } 273 | 274 | .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { 275 | color: #999; 276 | cursor: pointer; 277 | display: inline-block; 278 | font-weight: bold; 279 | margin-right: 2px 280 | } 281 | 282 | .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { 283 | color: #333 284 | } 285 | 286 | .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, 287 | .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, 288 | .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline { 289 | float: right 290 | } 291 | 292 | .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { 293 | margin-left: 5px; 294 | margin-right: auto 295 | } 296 | 297 | .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { 298 | margin-left: 2px; 299 | margin-right: auto 300 | } 301 | 302 | .select2-container--default.select2-container--focus .select2-selection--multiple { 303 | border: solid black 1px; 304 | outline: 0 305 | } 306 | 307 | .select2-container--default.select2-container--disabled .select2-selection--multiple { 308 | background-color: #eee; 309 | cursor: default 310 | } 311 | 312 | .select2-container--default.select2-container--disabled .select2-selection__choice__remove { 313 | display: none 314 | } 315 | 316 | .select2-container--default.select2-container--open.select2-container--above .select2-selection--single, 317 | .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { 318 | border-top-left-radius: 0; 319 | border-top-right-radius: 0 320 | } 321 | 322 | .select2-container--default.select2-container--open.select2-container--below .select2-selection--single, 323 | .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { 324 | border-bottom-left-radius: 0; 325 | border-bottom-right-radius: 0 326 | } 327 | 328 | .select2-container--default .select2-search--dropdown .select2-search__field { 329 | border: 1px solid #aaa 330 | } 331 | 332 | .select2-container--default .select2-search--inline .select2-search__field { 333 | background: transparent; 334 | border: none; 335 | outline: 0; 336 | box-shadow: none; 337 | -webkit-appearance: textfield 338 | } 339 | 340 | .select2-container--default .select2-results > .select2-results__options { 341 | max-height: 200px; 342 | overflow-y: auto 343 | } 344 | 345 | .select2-container--default .select2-results__option[role=group] { 346 | padding: 0 347 | } 348 | 349 | .select2-container--default .select2-results__option[aria-disabled=true] { 350 | color: #999 351 | } 352 | 353 | .select2-container--default .select2-results__option[aria-selected=true] { 354 | background-color: #ddd 355 | } 356 | 357 | .select2-container--default .select2-results__option .select2-results__option { 358 | padding-left: 1em 359 | } 360 | 361 | .select2-container--default .select2-results__option .select2-results__option .select2-results__group { 362 | padding-left: 0 363 | } 364 | 365 | .select2-container--default .select2-results__option .select2-results__option .select2-results__option { 366 | margin-left: -1em; 367 | padding-left: 2em 368 | } 369 | 370 | .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { 371 | margin-left: -2em; 372 | padding-left: 3em 373 | } 374 | 375 | .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { 376 | margin-left: -3em; 377 | padding-left: 4em 378 | } 379 | 380 | .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { 381 | margin-left: -4em; 382 | padding-left: 5em 383 | } 384 | 385 | .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { 386 | margin-left: -5em; 387 | padding-left: 6em 388 | } 389 | 390 | .select2-container--default .select2-results__option--highlighted[aria-selected] { 391 | background-color: #5897fb; 392 | color: white 393 | } 394 | 395 | .select2-container--default .select2-results__group { 396 | cursor: default; 397 | display: block; 398 | padding: 6px 399 | } 400 | 401 | .select2-container--classic .select2-selection--single { 402 | background-color: #f7f7f7; 403 | border: 1px solid #aaa; 404 | border-radius: 4px; 405 | outline: 0; 406 | background-image: -webkit-linear-gradient(top, #fff 50%, #eee 100%); 407 | background-image: -o-linear-gradient(top, #fff 50%, #eee 100%); 408 | background-image: linear-gradient(to bottom, #fff 50%, #eee 100%); 409 | background-repeat: repeat-x; 410 | filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0) 411 | } 412 | 413 | .select2-container--classic .select2-selection--single:focus { 414 | border: 1px solid #5897fb 415 | } 416 | 417 | .select2-container--classic .select2-selection--single .select2-selection__rendered { 418 | color: #444; 419 | line-height: 28px 420 | } 421 | 422 | .select2-container--classic .select2-selection--single .select2-selection__clear { 423 | cursor: pointer; 424 | float: right; 425 | font-weight: bold; 426 | margin-right: 10px 427 | } 428 | 429 | .select2-container--classic .select2-selection--single .select2-selection__placeholder { 430 | color: #999 431 | } 432 | 433 | .select2-container--classic .select2-selection--single .select2-selection__arrow { 434 | background-color: #ddd; 435 | border: none; 436 | border-left: 1px solid #aaa; 437 | border-top-right-radius: 4px; 438 | border-bottom-right-radius: 4px; 439 | height: 26px; 440 | position: absolute; 441 | top: 1px; 442 | right: 1px; 443 | width: 20px; 444 | background-image: -webkit-linear-gradient(top, #eee 50%, #ccc 100%); 445 | background-image: -o-linear-gradient(top, #eee 50%, #ccc 100%); 446 | background-image: linear-gradient(to bottom, #eee 50%, #ccc 100%); 447 | background-repeat: repeat-x; 448 | filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0) 449 | } 450 | 451 | .select2-container--classic .select2-selection--single .select2-selection__arrow b { 452 | border-color: #888 transparent transparent transparent; 453 | border-style: solid; 454 | border-width: 5px 4px 0 4px; 455 | height: 0; 456 | left: 50%; 457 | margin-left: -4px; 458 | margin-top: -2px; 459 | position: absolute; 460 | top: 50%; 461 | width: 0 462 | } 463 | 464 | .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { 465 | float: left 466 | } 467 | 468 | .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { 469 | border: none; 470 | border-right: 1px solid #aaa; 471 | border-radius: 0; 472 | border-top-left-radius: 4px; 473 | border-bottom-left-radius: 4px; 474 | left: 1px; 475 | right: auto 476 | } 477 | 478 | .select2-container--classic.select2-container--open .select2-selection--single { 479 | border: 1px solid #5897fb 480 | } 481 | 482 | .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { 483 | background: transparent; 484 | border: none 485 | } 486 | 487 | .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { 488 | border-color: transparent transparent #888 transparent; 489 | border-width: 0 4px 5px 4px 490 | } 491 | 492 | .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { 493 | border-top: none; 494 | border-top-left-radius: 0; 495 | border-top-right-radius: 0; 496 | background-image: -webkit-linear-gradient(top, #fff 0%, #eee 50%); 497 | background-image: -o-linear-gradient(top, #fff 0%, #eee 50%); 498 | background-image: linear-gradient(to bottom, #fff 0%, #eee 50%); 499 | background-repeat: repeat-x; 500 | filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0) 501 | } 502 | 503 | .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { 504 | border-bottom: none; 505 | border-bottom-left-radius: 0; 506 | border-bottom-right-radius: 0; 507 | background-image: -webkit-linear-gradient(top, #eee 50%, #fff 100%); 508 | background-image: -o-linear-gradient(top, #eee 50%, #fff 100%); 509 | background-image: linear-gradient(to bottom, #eee 50%, #fff 100%); 510 | background-repeat: repeat-x; 511 | filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0) 512 | } 513 | 514 | .select2-container--classic .select2-selection--multiple { 515 | background-color: white; 516 | border: 1px solid #aaa; 517 | border-radius: 4px; 518 | cursor: text; 519 | outline: 0 520 | } 521 | 522 | .select2-container--classic .select2-selection--multiple:focus { 523 | border: 1px solid #5897fb 524 | } 525 | 526 | .select2-container--classic .select2-selection--multiple .select2-selection__rendered { 527 | list-style: none; 528 | margin: 0; 529 | padding: 0 5px 530 | } 531 | 532 | .select2-container--classic .select2-selection--multiple .select2-selection__clear { 533 | display: none 534 | } 535 | 536 | .select2-container--classic .select2-selection--multiple .select2-selection__choice { 537 | background-color: #e4e4e4; 538 | border: 1px solid #aaa; 539 | border-radius: 4px; 540 | cursor: default; 541 | float: left; 542 | margin-right: 5px; 543 | margin-top: 5px; 544 | padding: 0 5px 545 | } 546 | 547 | .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { 548 | color: #888; 549 | cursor: pointer; 550 | display: inline-block; 551 | font-weight: bold; 552 | margin-right: 2px 553 | } 554 | 555 | .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { 556 | color: #555 557 | } 558 | 559 | .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { 560 | float: right 561 | } 562 | 563 | .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { 564 | margin-left: 5px; 565 | margin-right: auto 566 | } 567 | 568 | .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { 569 | margin-left: 2px; 570 | margin-right: auto 571 | } 572 | 573 | .select2-container--classic.select2-container--open .select2-selection--multiple { 574 | border: 1px solid #5897fb 575 | } 576 | 577 | .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { 578 | border-top: none; 579 | border-top-left-radius: 0; 580 | border-top-right-radius: 0 581 | } 582 | 583 | .select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { 584 | border-bottom: none; 585 | border-bottom-left-radius: 0; 586 | border-bottom-right-radius: 0 587 | } 588 | 589 | .select2-container--classic .select2-search--dropdown .select2-search__field { 590 | border: 1px solid #aaa; 591 | outline: 0 592 | } 593 | 594 | .select2-container--classic .select2-search--inline .select2-search__field { 595 | outline: 0; 596 | box-shadow: none 597 | } 598 | 599 | .select2-container--classic .select2-dropdown { 600 | background-color: #fff; 601 | border: 1px solid transparent 602 | } 603 | 604 | .select2-container--classic .select2-dropdown--above { 605 | border-bottom: none 606 | } 607 | 608 | .select2-container--classic .select2-dropdown--below { 609 | border-top: none 610 | } 611 | 612 | .select2-container--classic .select2-results > .select2-results__options { 613 | max-height: 200px; 614 | overflow-y: auto 615 | } 616 | 617 | .select2-container--classic .select2-results__option[role=group] { 618 | padding: 0 619 | } 620 | 621 | .select2-container--classic .select2-results__option[aria-disabled=true] { 622 | color: grey 623 | } 624 | 625 | .select2-container--classic .select2-results__option--highlighted[aria-selected] { 626 | background-color: #3875d7; 627 | color: #fff 628 | } 629 | 630 | .select2-container--classic .select2-results__group { 631 | cursor: default; 632 | display: block; 633 | padding: 6px 634 | } 635 | 636 | .select2-container--classic.select2-container--open .select2-dropdown { 637 | border-color: #5897fb 638 | } 639 | 640 | 641 | 642 | -------------------------------------------------------------------------------- /web/static/css/select2.min.css: -------------------------------------------------------------------------------- 1 | .select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} 2 | -------------------------------------------------------------------------------- /web/static/js/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * * Bootstrap v3.3.7 (http://getbootstrap.com) 3 | * * Copyright 2011-2016 Twitter, Inc. 4 | * * Licensed under the MIT license 5 | * */ 6 | if ("undefined" == typeof jQuery) 7 | throw new Error("Bootstrap's JavaScript requires jQuery"); 8 | +function(a) { 9 | "use strict"; 10 | var b = a.fn.jquery.split(" ")[0].split("."); 11 | if (b[0] < 2 && b[1] < 9 || 1 == b[0] && 9 == b[1] && b[2] < 1 || b[0] > 3) 12 | throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4") 13 | }(jQuery), +function(a) { 14 | "use strict"; 15 | function b() { 16 | var a = document.createElement("bootstrap"), 17 | b = { 18 | WebkitTransition: "webkitTransitionEnd", 19 | MozTransition: "transitionend", 20 | OTransition: "oTransitionEnd otransitionend", 21 | transition: "transitionend" 22 | }; 23 | for (var c in b) 24 | if (void 0 !== a.style[c]) 25 | return { 26 | end: b[c] 27 | }; 28 | return !1 29 | } 30 | a.fn.emulateTransitionEnd = function(b) { 31 | var c = !1, 32 | d = this; 33 | a(this).one("bsTransitionEnd", function() { 34 | c = !0 35 | }); 36 | var e = function() { 37 | c || a(d).trigger(a.support.transition.end) 38 | }; 39 | return setTimeout(e, b), this 40 | }, a(function() { 41 | a.support.transition = b(), a.support.transition && (a.event.special.bsTransitionEnd = { 42 | bindType: a.support.transition.end, 43 | delegateType: a.support.transition.end, 44 | handle: function(b) { 45 | if (a(b.target).is(this)) 46 | return b.handleObj.handler.apply(this, arguments) 47 | } 48 | }) 49 | }) 50 | }(jQuery), +function(a) { 51 | "use strict"; 52 | function b(b) { 53 | return this.each(function() { 54 | var c = a(this), 55 | e = c.data("bs.alert"); 56 | e || c.data("bs.alert", e = new d(this)), "string" == typeof b && e[b].call(c) 57 | }) 58 | } 59 | var c = '[data-dismiss="alert"]', 60 | d = function(b) { 61 | a(b).on("click", c, this.close) 62 | }; 63 | d.VERSION = "3.3.7", d.TRANSITION_DURATION = 150, d.prototype.close = function(b) { 64 | function c() { 65 | g.detach().trigger("closed.bs.alert").remove() 66 | } 67 | var e = a(this), 68 | f = e.attr("data-target"); 69 | f || (f = e.attr("href"), f = f && f.replace(/.*(?=#[^\s]*$)/, "")); 70 | var g = a("#" === f ? [] : f); 71 | b && b.preventDefault(), g.length || (g = e.closest(".alert")), g.trigger(b = a.Event("close.bs.alert")), b.isDefaultPrevented() || (g.removeClass("in"), a.support.transition && g.hasClass("fade") ? g.one("bsTransitionEnd", c).emulateTransitionEnd(d.TRANSITION_DURATION) : c()) 72 | }; 73 | var e = a.fn.alert; 74 | a.fn.alert = b, a.fn.alert.Constructor = d, a.fn.alert.noConflict = function() { 75 | return a.fn.alert = e, this 76 | }, a(document).on("click.bs.alert.data-api", c, d.prototype.close) 77 | }(jQuery), +function(a) { 78 | "use strict"; 79 | function b(b) { 80 | return this.each(function() { 81 | var d = a(this), 82 | e = d.data("bs.button"), 83 | f = "object" == typeof b && b; 84 | e || d.data("bs.button", e = new c(this, f)), "toggle" == b ? e.toggle() : b && e.setState(b) 85 | }) 86 | } 87 | var c = function(b, d) { 88 | this.$element = a(b), this.options = a.extend({}, c.DEFAULTS, d), this.isLoading = !1 89 | }; 90 | c.VERSION = "3.3.7", c.DEFAULTS = { 91 | loadingText: "loading..." 92 | }, c.prototype.setState = function(b) { 93 | var c = "disabled", 94 | d = this.$element, 95 | e = d.is("input") ? "val" : "html", 96 | f = d.data(); 97 | b += "Text", null == f.resetText && d.data("resetText", d[e]()), setTimeout(a.proxy(function() { 98 | d[e](null == f[b] ? this.options[b] : f[b]), "loadingText" == b ? (this.isLoading = !0, d.addClass(c).attr(c, c).prop(c, !0)) : this.isLoading && (this.isLoading = !1, d.removeClass(c).removeAttr(c).prop(c, !1)) 99 | }, this), 0) 100 | }, c.prototype.toggle = function() { 101 | var a = !0, 102 | b = this.$element.closest('[data-toggle="buttons"]'); 103 | if (b.length) { 104 | var c = this.$element.find("input"); 105 | "radio" == c.prop("type") ? (c.prop("checked") && (a = !1), b.find(".active").removeClass("active"), this.$element.addClass("active")) : "checkbox" == c.prop("type") && (c.prop("checked") !== this.$element.hasClass("active") && (a = !1), this.$element.toggleClass("active")), c.prop("checked", this.$element.hasClass("active")), a && c.trigger("change") 106 | } else 107 | this.$element.attr("aria-pressed", !this.$element.hasClass("active")), this.$element.toggleClass("active") 108 | }; 109 | var d = a.fn.button; 110 | a.fn.button = b, a.fn.button.Constructor = c, a.fn.button.noConflict = function() { 111 | return a.fn.button = d, this 112 | }, a(document).on("click.bs.button.data-api", '[data-toggle^="button"]', function(c) { 113 | var d = a(c.target).closest(".btn"); 114 | b.call(d, "toggle"), a(c.target).is('input[type="radio"], input[type="checkbox"]') || (c.preventDefault(), d.is("input,button") ? d.trigger("focus") : d.find("input:visible,button:visible").first().trigger("focus")) 115 | }).on("focus.bs.button.data-api blur.bs.button.data-api", '[data-toggle^="button"]', function(b) { 116 | a(b.target).closest(".btn").toggleClass("focus", /^focus(in)?$/.test(b.type)) 117 | }) 118 | }(jQuery), +function(a) { 119 | "use strict"; 120 | function b(b) { 121 | return this.each(function() { 122 | var d = a(this), 123 | e = d.data("bs.carousel"), 124 | f = a.extend({}, c.DEFAULTS, d.data(), "object" == typeof b && b), 125 | g = "string" == typeof b ? b : f.slide; 126 | e || d.data("bs.carousel", e = new c(this, f)), "number" == typeof b ? e.to(b) : g ? e[g]() : f.interval && e.pause().cycle() 127 | }) 128 | } 129 | var c = function(b, c) { 130 | this.$element = a(b), this.$indicators = this.$element.find(".carousel-indicators"), this.options = c, this.paused = null, this.sliding = null, this.interval = null, this.$active = null, this.$items = null, this.options.keyboard && this.$element.on("keydown.bs.carousel", a.proxy(this.keydown, this)), "hover" == this.options.pause && !("ontouchstart" in document.documentElement) && this.$element.on("mouseenter.bs.carousel", a.proxy(this.pause, this)).on("mouseleave.bs.carousel", a.proxy(this.cycle, this)) 131 | }; 132 | c.VERSION = "3.3.7", c.TRANSITION_DURATION = 600, c.DEFAULTS = { 133 | interval: 5e3, 134 | pause: "hover", 135 | wrap: !0, 136 | keyboard: !0 137 | }, c.prototype.keydown = function(a) { 138 | if (!/input|textarea/i.test(a.target.tagName)) { 139 | switch (a.which) { 140 | case 37: 141 | this.prev(); 142 | break; 143 | case 39: 144 | this.next(); 145 | break; 146 | default: 147 | return 148 | } 149 | a.preventDefault() 150 | } 151 | }, c.prototype.cycle = function(b) { 152 | return b || (this.paused = !1), this.interval && clearInterval(this.interval), this.options.interval && !this.paused && (this.interval = setInterval(a.proxy(this.next, this), this.options.interval)), this 153 | }, c.prototype.getItemIndex = function(a) { 154 | return this.$items = a.parent().children(".item"), this.$items.index(a || this.$active) 155 | }, c.prototype.getItemForDirection = function(a, b) { 156 | var c = this.getItemIndex(b), 157 | d = "prev" == a && 0 === c || "next" == a && c == this.$items.length - 1; 158 | if (d && !this.options.wrap) 159 | return b; 160 | var e = "prev" == a ? -1 : 1, 161 | f = (c + e) % this.$items.length; 162 | return this.$items.eq(f) 163 | }, c.prototype.to = function(a) { 164 | var b = this, 165 | c = this.getItemIndex(this.$active = this.$element.find(".item.active")); 166 | if (!(a > this.$items.length - 1 || a < 0)) 167 | return this.sliding ? this.$element.one("slid.bs.carousel", function() { 168 | b.to(a) 169 | }) : c == a ? this.pause().cycle() : this.slide(a > c ? "next" : "prev", this.$items.eq(a)) 170 | }, c.prototype.pause = function(b) { 171 | return b || (this.paused = !0), this.$element.find(".next, .prev").length && a.support.transition && (this.$element.trigger(a.support.transition.end), this.cycle(!0)), this.interval = clearInterval(this.interval), this 172 | }, c.prototype.next = function() { 173 | if (!this.sliding) 174 | return this.slide("next") 175 | }, c.prototype.prev = function() { 176 | if (!this.sliding) 177 | return this.slide("prev") 178 | }, c.prototype.slide = function(b, d) { 179 | var e = this.$element.find(".item.active"), 180 | f = d || this.getItemForDirection(b, e), 181 | g = this.interval, 182 | h = "next" == b ? "left" : "right", 183 | i = this; 184 | if (f.hasClass("active")) 185 | return this.sliding = !1; 186 | var j = f[0], 187 | k = a.Event("slide.bs.carousel", { 188 | relatedTarget: j, 189 | direction: h 190 | }); 191 | if (this.$element.trigger(k), !k.isDefaultPrevented()) { 192 | if (this.sliding = !0, g && this.pause(), this.$indicators.length) { 193 | this.$indicators.find(".active").removeClass("active"); 194 | var l = a(this.$indicators.children()[this.getItemIndex(f)]); 195 | l && l.addClass("active") 196 | } 197 | var m = a.Event("slid.bs.carousel", { 198 | relatedTarget: j, 199 | direction: h 200 | }); 201 | return a.support.transition && this.$element.hasClass("slide") ? (f.addClass(b), f[0].offsetWidth, e.addClass(h), f.addClass(h), e.one("bsTransitionEnd", function() { 202 | f.removeClass([b, h].join(" ")).addClass("active"), e.removeClass(["active", h].join(" ")), i.sliding = !1, setTimeout(function() { 203 | i.$element.trigger(m) 204 | }, 0) 205 | }).emulateTransitionEnd(c.TRANSITION_DURATION)) : (e.removeClass("active"), f.addClass("active"), this.sliding = !1, this.$element.trigger(m)), g && this.cycle(), this 206 | } 207 | }; 208 | var d = a.fn.carousel; 209 | a.fn.carousel = b, a.fn.carousel.Constructor = c, a.fn.carousel.noConflict = function() { 210 | return a.fn.carousel = d, this 211 | }; 212 | var e = function(c) { 213 | var d, 214 | e = a(this), 215 | f = a(e.attr("data-target") || (d = e.attr("href")) && d.replace(/.*(?=#[^\s]+$)/, "")); 216 | if (f.hasClass("carousel")) { 217 | var g = a.extend({}, f.data(), e.data()), 218 | h = e.attr("data-slide-to"); 219 | h && (g.interval = !1), b.call(f, g), h && f.data("bs.carousel").to(h), c.preventDefault() 220 | } 221 | }; 222 | a(document).on("click.bs.carousel.data-api", "[data-slide]", e).on("click.bs.carousel.data-api", "[data-slide-to]", e), a(window).on("load", function() { 223 | a('[data-ride="carousel"]').each(function() { 224 | var c = a(this); 225 | b.call(c, c.data()) 226 | }) 227 | }) 228 | }(jQuery), +function(a) { 229 | "use strict"; 230 | function b(b) { 231 | var c, 232 | d = b.attr("data-target") || (c = b.attr("href")) && c.replace(/.*(?=#[^\s]+$)/, ""); 233 | return a(d) 234 | } 235 | function c(b) { 236 | return this.each(function() { 237 | var c = a(this), 238 | e = c.data("bs.collapse"), 239 | f = a.extend({}, d.DEFAULTS, c.data(), "object" == typeof b && b); 240 | !e && f.toggle && /show|hide/.test(b) && (f.toggle = !1), e || c.data("bs.collapse", e = new d(this, f)), "string" == typeof b && e[b]() 241 | }) 242 | } 243 | var d = function(b, c) { 244 | this.$element = a(b), this.options = a.extend({}, d.DEFAULTS, c), this.$trigger = a('[data-toggle="collapse"][href="#' + b.id + '"],[data-toggle="collapse"][data-target="#' + b.id + '"]'), this.transitioning = null, this.options.parent ? this.$parent = this.getParent() : this.addAriaAndCollapsedClass(this.$element, this.$trigger), this.options.toggle && this.toggle() 245 | }; 246 | d.VERSION = "3.3.7", d.TRANSITION_DURATION = 350, d.DEFAULTS = { 247 | toggle: !0 248 | }, d.prototype.dimension = function() { 249 | var a = this.$element.hasClass("width"); 250 | return a ? "width" : "height" 251 | }, d.prototype.show = function() { 252 | if (!this.transitioning && !this.$element.hasClass("in")) { 253 | var b, 254 | e = this.$parent && this.$parent.children(".panel").children(".in, .collapsing"); 255 | if (!(e && e.length && (b = e.data("bs.collapse"), b && b.transitioning))) { 256 | var f = a.Event("show.bs.collapse"); 257 | if (this.$element.trigger(f), !f.isDefaultPrevented()) { 258 | e && e.length && (c.call(e, "hide"), b || e.data("bs.collapse", null)); 259 | var g = this.dimension(); 260 | this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded", !0), this.$trigger.removeClass("collapsed").attr("aria-expanded", !0), this.transitioning = 1; 261 | var h = function() { 262 | this.$element.removeClass("collapsing").addClass("collapse in")[g](""), this.transitioning = 0, this.$element.trigger("shown.bs.collapse") 263 | }; 264 | if (!a.support.transition) 265 | return h.call(this); 266 | var i = a.camelCase(["scroll", g].join("-")); 267 | this.$element.one("bsTransitionEnd", a.proxy(h, this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i]) 268 | } 269 | } 270 | } 271 | }, d.prototype.hide = function() { 272 | if (!this.transitioning && this.$element.hasClass("in")) { 273 | var b = a.Event("hide.bs.collapse"); 274 | if (this.$element.trigger(b), !b.isDefaultPrevented()) { 275 | var c = this.dimension(); 276 | this.$element[c](this.$element[c]())[0].offsetHeight, this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded", !1), this.$trigger.addClass("collapsed").attr("aria-expanded", !1), this.transitioning = 1; 277 | var e = function() { 278 | this.transitioning = 0, this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse") 279 | }; 280 | return a.support.transition ? void this.$element[c](0).one("bsTransitionEnd", a.proxy(e, this)).emulateTransitionEnd(d.TRANSITION_DURATION) : e.call(this) 281 | } 282 | } 283 | }, d.prototype.toggle = function() { 284 | this[this.$element.hasClass("in") ? "hide" : "show"]() 285 | }, d.prototype.getParent = function() { 286 | return a(this.options.parent).find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]').each(a.proxy(function(c, d) { 287 | var e = a(d); 288 | this.addAriaAndCollapsedClass(b(e), e) 289 | }, this)).end() 290 | }, d.prototype.addAriaAndCollapsedClass = function(a, b) { 291 | var c = a.hasClass("in"); 292 | a.attr("aria-expanded", c), b.toggleClass("collapsed", !c).attr("aria-expanded", c) 293 | }; 294 | var e = a.fn.collapse; 295 | a.fn.collapse = c, a.fn.collapse.Constructor = d, a.fn.collapse.noConflict = function() { 296 | return a.fn.collapse = e, this 297 | }, a(document).on("click.bs.collapse.data-api", '[data-toggle="collapse"]', function(d) { 298 | var e = a(this); 299 | e.attr("data-target") || d.preventDefault(); 300 | var f = b(e), 301 | g = f.data("bs.collapse"), 302 | h = g ? "toggle" : e.data(); 303 | c.call(f, h) 304 | }) 305 | }(jQuery), +function(a) { 306 | "use strict"; 307 | function b(b) { 308 | var c = b.attr("data-target"); 309 | c || (c = b.attr("href"), c = c && /#[A-Za-z]/.test(c) && c.replace(/.*(?=#[^\s]*$)/, "")); 310 | var d = c && a(c); 311 | return d && d.length ? d : b.parent() 312 | } 313 | function c(c) { 314 | c && 3 === c.which || (a(e).remove(), a(f).each(function() { 315 | var d = a(this), 316 | e = b(d), 317 | f = { 318 | relatedTarget: this 319 | }; 320 | e.hasClass("open") && (c && "click" == c.type && /input|textarea/i.test(c.target.tagName) && a.contains(e[0], c.target) || (e.trigger(c = a.Event("hide.bs.dropdown", f)), c.isDefaultPrevented() || (d.attr("aria-expanded", "false"), e.removeClass("open").trigger(a.Event("hidden.bs.dropdown", f))))) 321 | })) 322 | } 323 | function d(b) { 324 | return this.each(function() { 325 | var c = a(this), 326 | d = c.data("bs.dropdown"); 327 | d || c.data("bs.dropdown", d = new g(this)), "string" == typeof b && d[b].call(c) 328 | }) 329 | } 330 | var e = ".dropdown-backdrop", 331 | f = '[data-toggle="dropdown"]', 332 | g = function(b) { 333 | a(b).on("click.bs.dropdown", this.toggle) 334 | }; 335 | g.VERSION = "3.3.7", g.prototype.toggle = function(d) { 336 | var e = a(this); 337 | if (!e.is(".disabled, :disabled")) { 338 | var f = b(e), 339 | g = f.hasClass("open"); 340 | if (c(), !g) { 341 | "ontouchstart" in document.documentElement && !f.closest(".navbar-nav").length && a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click", c); 342 | var h = { 343 | relatedTarget: this 344 | }; 345 | if (f.trigger(d = a.Event("show.bs.dropdown", h)), d.isDefaultPrevented()) 346 | return; 347 | e.trigger("focus").attr("aria-expanded", "true"), f.toggleClass("open").trigger(a.Event("shown.bs.dropdown", h)) 348 | } 349 | return !1 350 | } 351 | }, g.prototype.keydown = function(c) { 352 | if (/(38|40|27|32)/.test(c.which) && !/input|textarea/i.test(c.target.tagName)) { 353 | var d = a(this); 354 | if (c.preventDefault(), c.stopPropagation(), !d.is(".disabled, :disabled")) { 355 | var e = b(d), 356 | g = e.hasClass("open"); 357 | if (!g && 27 != c.which || g && 27 == c.which) 358 | return 27 == c.which && e.find(f).trigger("focus"), d.trigger("click"); 359 | var h = " li:not(.disabled):visible a", 360 | i = e.find(".dropdown-menu" + h); 361 | if (i.length) { 362 | var j = i.index(c.target); 363 | 38 == c.which && j > 0 && j--, 40 == c.which && j < i.length - 1 && j++, ~j || (j = 0), i.eq(j).trigger("focus") 364 | } 365 | } 366 | } 367 | }; 368 | var h = a.fn.dropdown; 369 | a.fn.dropdown = d, a.fn.dropdown.Constructor = g, a.fn.dropdown.noConflict = function() { 370 | return a.fn.dropdown = h, this 371 | }, a(document).on("click.bs.dropdown.data-api", c).on("click.bs.dropdown.data-api", ".dropdown form", function(a) { 372 | a.stopPropagation() 373 | }).on("click.bs.dropdown.data-api", f, g.prototype.toggle).on("keydown.bs.dropdown.data-api", f, g.prototype.keydown).on("keydown.bs.dropdown.data-api", ".dropdown-menu", g.prototype.keydown) 374 | }(jQuery), +function(a) { 375 | "use strict"; 376 | function b(b, d) { 377 | return this.each(function() { 378 | var e = a(this), 379 | f = e.data("bs.modal"), 380 | g = a.extend({}, c.DEFAULTS, e.data(), "object" == typeof b && b); 381 | f || e.data("bs.modal", f = new c(this, g)), "string" == typeof b ? f[b](d) : g.show && f.show(d) 382 | }) 383 | } 384 | var c = function(b, c) { 385 | this.options = c, this.$body = a(document.body), this.$element = a(b), this.$dialog = this.$element.find(".modal-dialog"), this.$backdrop = null, this.isShown = null, this.originalBodyPad = null, this.scrollbarWidth = 0, this.ignoreBackdropClick = !1, this.options.remote && this.$element.find(".modal-content").load(this.options.remote, a.proxy(function() { 386 | this.$element.trigger("loaded.bs.modal") 387 | }, this)) 388 | }; 389 | c.VERSION = "3.3.7", c.TRANSITION_DURATION = 300, c.BACKDROP_TRANSITION_DURATION = 150, c.DEFAULTS = { 390 | backdrop: !0, 391 | keyboard: !0, 392 | show: !0 393 | }, c.prototype.toggle = function(a) { 394 | return this.isShown ? this.hide() : this.show(a) 395 | }, c.prototype.show = function(b) { 396 | var d = this, 397 | e = a.Event("show.bs.modal", { 398 | relatedTarget: b 399 | }); 400 | this.$element.trigger(e), this.isShown || e.isDefaultPrevented() || (this.isShown = !0, this.checkScrollbar(), this.setScrollbar(), this.$body.addClass("modal-open"), this.escape(), this.resize(), this.$element.on("click.dismiss.bs.modal", '[data-dismiss="modal"]', a.proxy(this.hide, this)), this.$dialog.on("mousedown.dismiss.bs.modal", function() { 401 | d.$element.one("mouseup.dismiss.bs.modal", function(b) { 402 | a(b.target).is(d.$element) && (d.ignoreBackdropClick = !0) 403 | }) 404 | }), this.backdrop(function() { 405 | var e = a.support.transition && d.$element.hasClass("fade"); 406 | d.$element.parent().length || d.$element.appendTo(d.$body), d.$element.show().scrollTop(0), d.adjustDialog(), e && d.$element[0].offsetWidth, d.$element.addClass("in"), d.enforceFocus(); 407 | var f = a.Event("shown.bs.modal", { 408 | relatedTarget: b 409 | }); 410 | e ? d.$dialog.one("bsTransitionEnd", function() { 411 | d.$element.trigger("focus").trigger(f) 412 | }).emulateTransitionEnd(c.TRANSITION_DURATION) : d.$element.trigger("focus").trigger(f) 413 | })) 414 | }, c.prototype.hide = function(b) { 415 | b && b.preventDefault(), b = a.Event("hide.bs.modal"), this.$element.trigger(b), this.isShown && !b.isDefaultPrevented() && (this.isShown = !1, this.escape(), this.resize(), a(document).off("focusin.bs.modal"), this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"), this.$dialog.off("mousedown.dismiss.bs.modal"), a.support.transition && this.$element.hasClass("fade") ? this.$element.one("bsTransitionEnd", a.proxy(this.hideModal, this)).emulateTransitionEnd(c.TRANSITION_DURATION) : this.hideModal()) 416 | }, c.prototype.enforceFocus = function() { 417 | a(document).off("focusin.bs.modal").on("focusin.bs.modal", a.proxy(function(a) { 418 | document === a.target || this.$element[0] === a.target || this.$element.has(a.target).length || this.$element.trigger("focus") 419 | }, this)) 420 | }, c.prototype.escape = function() { 421 | this.isShown && this.options.keyboard ? this.$element.on("keydown.dismiss.bs.modal", a.proxy(function(a) { 422 | 27 == a.which && this.hide() 423 | }, this)) : this.isShown || this.$element.off("keydown.dismiss.bs.modal") 424 | }, c.prototype.resize = function() { 425 | this.isShown ? a(window).on("resize.bs.modal", a.proxy(this.handleUpdate, this)) : a(window).off("resize.bs.modal") 426 | }, c.prototype.hideModal = function() { 427 | var a = this; 428 | this.$element.hide(), this.backdrop(function() { 429 | a.$body.removeClass("modal-open"), a.resetAdjustments(), a.resetScrollbar(), a.$element.trigger("hidden.bs.modal") 430 | }) 431 | }, c.prototype.removeBackdrop = function() { 432 | this.$backdrop && this.$backdrop.remove(), this.$backdrop = null 433 | }, c.prototype.backdrop = function(b) { 434 | var d = this, 435 | e = this.$element.hasClass("fade") ? "fade" : ""; 436 | if (this.isShown && this.options.backdrop) { 437 | var f = a.support.transition && e; 438 | if (this.$backdrop = a(document.createElement("div")).addClass("modal-backdrop " + e).appendTo(this.$body), this.$element.on("click.dismiss.bs.modal", a.proxy(function(a) { 439 | return this.ignoreBackdropClick ? void (this.ignoreBackdropClick = !1) : void (a.target === a.currentTarget && ("static" == this.options.backdrop ? this.$element[0].focus() : this.hide())) 440 | }, this)), f && this.$backdrop[0].offsetWidth, this.$backdrop.addClass("in"), !b) 441 | return; 442 | f ? this.$backdrop.one("bsTransitionEnd", b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION) : b() 443 | } else if (!this.isShown && this.$backdrop) { 444 | this.$backdrop.removeClass("in"); 445 | var g = function() { 446 | d.removeBackdrop(), b && b() 447 | }; 448 | a.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one("bsTransitionEnd", g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION) : g() 449 | } else 450 | b && b() 451 | }, c.prototype.handleUpdate = function() { 452 | this.adjustDialog() 453 | }, c.prototype.adjustDialog = function() { 454 | var a = this.$element[0].scrollHeight > document.documentElement.clientHeight; 455 | this.$element.css({ 456 | paddingLeft: !this.bodyIsOverflowing && a ? this.scrollbarWidth : "", 457 | paddingRight: this.bodyIsOverflowing && !a ? this.scrollbarWidth : "" 458 | }) 459 | }, c.prototype.resetAdjustments = function() { 460 | this.$element.css({ 461 | paddingLeft: "", 462 | paddingRight: "" 463 | }) 464 | }, c.prototype.checkScrollbar = function() { 465 | var a = window.innerWidth; 466 | if (!a) { 467 | var b = document.documentElement.getBoundingClientRect(); 468 | a = b.right - Math.abs(b.left) 469 | } 470 | this.bodyIsOverflowing = document.body.clientWidth < a, this.scrollbarWidth = this.measureScrollbar() 471 | }, c.prototype.setScrollbar = function() { 472 | var a = parseInt(this.$body.css("padding-right") || 0, 10); 473 | this.originalBodyPad = document.body.style.paddingRight || "", this.bodyIsOverflowing && this.$body.css("padding-right", a + this.scrollbarWidth) 474 | }, c.prototype.resetScrollbar = function() { 475 | this.$body.css("padding-right", this.originalBodyPad) 476 | }, c.prototype.measureScrollbar = function() { 477 | var a = document.createElement("div"); 478 | a.className = "modal-scrollbar-measure", this.$body.append(a); 479 | var b = a.offsetWidth - a.clientWidth; 480 | return this.$body[0].removeChild(a), b 481 | }; 482 | var d = a.fn.modal; 483 | a.fn.modal = b, a.fn.modal.Constructor = c, a.fn.modal.noConflict = function() { 484 | return a.fn.modal = d, this 485 | }, a(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function(c) { 486 | var d = a(this), 487 | e = d.attr("href"), 488 | f = a(d.attr("data-target") || e && e.replace(/.*(?=#[^\s]+$)/, "")), 489 | g = f.data("bs.modal") ? "toggle" : a.extend({ 490 | remote: !/#/.test(e) && e 491 | }, f.data(), d.data()); 492 | d.is("a") && c.preventDefault(), f.one("show.bs.modal", function(a) { 493 | a.isDefaultPrevented() || f.one("hidden.bs.modal", function() { 494 | d.is(":visible") && d.trigger("focus") 495 | }) 496 | }), b.call(f, g, this) 497 | }) 498 | }(jQuery), +function(a) { 499 | "use strict"; 500 | function b(b) { 501 | return this.each(function() { 502 | var d = a(this), 503 | e = d.data("bs.tooltip"), 504 | f = "object" == typeof b && b; 505 | !e && /destroy|hide/.test(b) || (e || d.data("bs.tooltip", e = new c(this, f)), "string" == typeof b && e[b]()) 506 | }) 507 | } 508 | var c = function(a, b) { 509 | this.type = null, this.options = null, this.enabled = null, this.timeout = null, this.hoverState = null, this.$element = null, this.inState = null, this.init("tooltip", a, b) 510 | }; 511 | c.VERSION = "3.3.7", c.TRANSITION_DURATION = 150, c.DEFAULTS = { 512 | animation: !0, 513 | placement: "top", 514 | selector: !1, 515 | template: '', 516 | trigger: "hover focus", 517 | title: "", 518 | delay: 0, 519 | html: !1, 520 | container: !1, 521 | viewport: { 522 | selector: "body", 523 | padding: 0 524 | } 525 | }, c.prototype.init = function(b, c, d) { 526 | if (this.enabled = !0, this.type = b, this.$element = a(c), this.options = this.getOptions(d), this.$viewport = this.options.viewport && a(a.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : this.options.viewport.selector || this.options.viewport), this.inState = { 527 | click: !1, 528 | hover: !1, 529 | focus: !1 530 | }, this.$element[0] instanceof document.constructor && !this.options.selector) 531 | throw new Error("`selector` option must be specified when initializing " + this.type + " on the window.document object!"); 532 | for (var e = this.options.trigger.split(" "), f = e.length; f--;) { 533 | var g = e[f]; 534 | if ("click" == g) 535 | this.$element.on("click." + this.type, this.options.selector, a.proxy(this.toggle, this)); 536 | else if ("manual" != g) { 537 | var h = "hover" == g ? "mouseenter" : "focusin", 538 | i = "hover" == g ? "mouseleave" : "focusout"; 539 | this.$element.on(h + "." + this.type, this.options.selector, a.proxy(this.enter, this)), this.$element.on(i + "." + this.type, this.options.selector, a.proxy(this.leave, this)) 540 | } 541 | } 542 | this.options.selector ? this._options = a.extend({}, this.options, { 543 | trigger: "manual", 544 | selector: "" 545 | }) : this.fixTitle() 546 | }, c.prototype.getDefaults = function() { 547 | return c.DEFAULTS 548 | }, c.prototype.getOptions = function(b) { 549 | return b = a.extend({}, this.getDefaults(), this.$element.data(), b), b.delay && "number" == typeof b.delay && (b.delay = { 550 | show: b.delay, 551 | hide: b.delay 552 | }), b 553 | }, c.prototype.getDelegateOptions = function() { 554 | var b = {}, 555 | c = this.getDefaults(); 556 | return this._options && a.each(this._options, function(a, d) { 557 | c[a] != d && (b[a] = d) 558 | }), b 559 | }, c.prototype.enter = function(b) { 560 | var c = b instanceof this.constructor ? b : a(b.currentTarget).data("bs." + this.type); 561 | return c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, c)), b instanceof a.Event && (c.inState["focusin" == b.type ? "focus" : "hover"] = !0), c.tip().hasClass("in") || "in" == c.hoverState ? void (c.hoverState = "in") : (clearTimeout(c.timeout), c.hoverState = "in", c.options.delay && c.options.delay.show ? void (c.timeout = setTimeout(function() { 562 | "in" == c.hoverState && c.show() 563 | }, c.options.delay.show)) : c.show()) 564 | }, c.prototype.isInStateTrue = function() { 565 | for (var a in this.inState) 566 | if (this.inState[a]) 567 | return !0; 568 | return !1 569 | }, c.prototype.leave = function(b) { 570 | var c = b instanceof this.constructor ? b : a(b.currentTarget).data("bs." + this.type); 571 | if (c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, c)), b instanceof a.Event && (c.inState["focusout" == b.type ? "focus" : "hover"] = !1), !c.isInStateTrue()) 572 | return clearTimeout(c.timeout), c.hoverState = "out", c.options.delay && c.options.delay.hide ? void (c.timeout = setTimeout(function() { 573 | "out" == c.hoverState && c.hide() 574 | }, c.options.delay.hide)) : c.hide() 575 | }, c.prototype.show = function() { 576 | var b = a.Event("show.bs." + this.type); 577 | if (this.hasContent() && this.enabled) { 578 | this.$element.trigger(b); 579 | var d = a.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]); 580 | if (b.isDefaultPrevented() || !d) 581 | return; 582 | var e = this, 583 | f = this.tip(), 584 | g = this.getUID(this.type); 585 | this.setContent(), f.attr("id", g), this.$element.attr("aria-describedby", g), this.options.animation && f.addClass("fade"); 586 | var h = "function" == typeof this.options.placement ? this.options.placement.call(this, f[0], this.$element[0]) : this.options.placement, 587 | i = /\s?auto?\s?/i, 588 | j = i.test(h); 589 | j && (h = h.replace(i, "") || "top"), f.detach().css({ 590 | top: 0, 591 | left: 0, 592 | display: "block" 593 | }).addClass(h).data("bs." + this.type, this), this.options.container ? f.appendTo(this.options.container) : f.insertAfter(this.$element), this.$element.trigger("inserted.bs." + this.type); 594 | var k = this.getPosition(), 595 | l = f[0].offsetWidth, 596 | m = f[0].offsetHeight; 597 | if (j) { 598 | var n = h, 599 | o = this.getPosition(this.$viewport); 600 | h = "bottom" == h && k.bottom + m > o.bottom ? "top" : "top" == h && k.top - m < o.top ? "bottom" : "right" == h && k.right + l > o.width ? "left" : "left" == h && k.left - l < o.left ? "right" : h, f.removeClass(n).addClass(h) 601 | } 602 | var p = this.getCalculatedOffset(h, k, l, m); 603 | this.applyPlacement(p, h); 604 | var q = function() { 605 | var a = e.hoverState; 606 | e.$element.trigger("shown.bs." + e.type), e.hoverState = null, "out" == a && e.leave(e) 607 | }; 608 | a.support.transition && this.$tip.hasClass("fade") ? f.one("bsTransitionEnd", q).emulateTransitionEnd(c.TRANSITION_DURATION) : q() 609 | } 610 | }, c.prototype.applyPlacement = function(b, c) { 611 | var d = this.tip(), 612 | e = d[0].offsetWidth, 613 | f = d[0].offsetHeight, 614 | g = parseInt(d.css("margin-top"), 10), 615 | h = parseInt(d.css("margin-left"), 10); 616 | isNaN(g) && (g = 0), isNaN(h) && (h = 0), b.top += g, b.left += h, a.offset.setOffset(d[0], a.extend({ 617 | using: function(a) { 618 | d.css({ 619 | top: Math.round(a.top), 620 | left: Math.round(a.left) 621 | }) 622 | } 623 | }, b), 0), d.addClass("in"); 624 | var i = d[0].offsetWidth, 625 | j = d[0].offsetHeight; 626 | "top" == c && j != f && (b.top = b.top + f - j); 627 | var k = this.getViewportAdjustedDelta(c, b, i, j); 628 | k.left ? b.left += k.left : b.top += k.top; 629 | var l = /top|bottom/.test(c), 630 | m = l ? 2 * k.left - e + i : 2 * k.top - f + j, 631 | n = l ? "offsetWidth" : "offsetHeight"; 632 | d.offset(b), this.replaceArrow(m, d[0][n], l) 633 | }, c.prototype.replaceArrow = function(a, b, c) { 634 | this.arrow().css(c ? "left" : "top", 50 * (1 - a / b) + "%").css(c ? "top" : "left", "") 635 | }, c.prototype.setContent = function() { 636 | var a = this.tip(), 637 | b = this.getTitle(); 638 | a.find(".tooltip-inner")[this.options.html ? "html" : "text"](b), a.removeClass("fade in top bottom left right") 639 | }, c.prototype.hide = function(b) { 640 | function d() { 641 | "in" != e.hoverState && f.detach(), e.$element && e.$element.removeAttr("aria-describedby").trigger("hidden.bs." + e.type), b && b() 642 | } 643 | var e = this, 644 | f = a(this.$tip), 645 | g = a.Event("hide.bs." + this.type); 646 | if (this.$element.trigger(g), !g.isDefaultPrevented()) 647 | return f.removeClass("in"), a.support.transition && f.hasClass("fade") ? f.one("bsTransitionEnd", d).emulateTransitionEnd(c.TRANSITION_DURATION) : d(), this.hoverState = null, this 648 | }, c.prototype.fixTitle = function() { 649 | var a = this.$element; 650 | (a.attr("title") || "string" != typeof a.attr("data-original-title")) && a.attr("data-original-title", a.attr("title") || "").attr("title", "") 651 | }, c.prototype.hasContent = function() { 652 | return this.getTitle() 653 | }, c.prototype.getPosition = function(b) { 654 | b = b || this.$element; 655 | var c = b[0], 656 | d = "BODY" == c.tagName, 657 | e = c.getBoundingClientRect(); 658 | null == e.width && (e = a.extend({}, e, { 659 | width: e.right - e.left, 660 | height: e.bottom - e.top 661 | })); 662 | var f = window.SVGElement && c instanceof window.SVGElement, 663 | g = d ? { 664 | top: 0, 665 | left: 0 666 | } : f ? null : b.offset(), 667 | h = { 668 | scroll: d ? document.documentElement.scrollTop || document.body.scrollTop : b.scrollTop() 669 | }, 670 | i = d ? { 671 | width: a(window).width(), 672 | height: a(window).height() 673 | } : null; 674 | return a.extend({}, e, h, i, g) 675 | }, c.prototype.getCalculatedOffset = function(a, b, c, d) { 676 | return "bottom" == a ? { 677 | top: b.top + b.height, 678 | left: b.left + b.width / 2 - c / 2 679 | } : "top" == a ? { 680 | top: b.top - d, 681 | left: b.left + b.width / 2 - c / 2 682 | } : "left" == a ? { 683 | top: b.top + b.height / 2 - d / 2, 684 | left: b.left - c 685 | } : { 686 | top: b.top + b.height / 2 - d / 2, 687 | left: b.left + b.width 688 | } 689 | }, c.prototype.getViewportAdjustedDelta = function(a, b, c, d) { 690 | var e = { 691 | top: 0, 692 | left: 0 693 | }; 694 | if (!this.$viewport) 695 | return e; 696 | var f = this.options.viewport && this.options.viewport.padding || 0, 697 | g = this.getPosition(this.$viewport); 698 | if (/right|left/.test(a)) { 699 | var h = b.top - f - g.scroll, 700 | i = b.top + f - g.scroll + d; 701 | h < g.top ? e.top = g.top - h : i > g.top + g.height && (e.top = g.top + g.height - i) 702 | } else { 703 | var j = b.left - f, 704 | k = b.left + f + c; 705 | j < g.left ? e.left = g.left - j : k > g.right && (e.left = g.left + g.width - k) 706 | } 707 | return e 708 | }, c.prototype.getTitle = function() { 709 | var a, 710 | b = this.$element, 711 | c = this.options; 712 | return a = b.attr("data-original-title") || ("function" == typeof c.title ? c.title.call(b[0]) : c.title) 713 | }, c.prototype.getUID = function(a) { 714 | do a += ~~(1e6 * Math.random()); 715 | while (document.getElementById(a)); 716 | return a 717 | }, c.prototype.tip = function() { 718 | if (!this.$tip && (this.$tip = a(this.options.template), 1 != this.$tip.length)) 719 | throw new Error(this.type + " `template` option must consist of exactly 1 top-level element!"); 720 | return this.$tip 721 | }, c.prototype.arrow = function() { 722 | return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow") 723 | }, c.prototype.enable = function() { 724 | this.enabled = !0 725 | }, c.prototype.disable = function() { 726 | this.enabled = !1 727 | }, c.prototype.toggleEnabled = function() { 728 | this.enabled = !this.enabled 729 | }, c.prototype.toggle = function(b) { 730 | var c = this; 731 | b && (c = a(b.currentTarget).data("bs." + this.type), c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, c))), b ? (c.inState.click = !c.inState.click, c.isInStateTrue() ? c.enter(c) : c.leave(c)) : c.tip().hasClass("in") ? c.leave(c) : c.enter(c) 732 | }, c.prototype.destroy = function() { 733 | var a = this; 734 | clearTimeout(this.timeout), this.hide(function() { 735 | a.$element.off("." + a.type).removeData("bs." + a.type), a.$tip && a.$tip.detach(), a.$tip = null, a.$arrow = null, a.$viewport = null, a.$element = null 736 | }) 737 | }; 738 | var d = a.fn.tooltip; 739 | a.fn.tooltip = b, a.fn.tooltip.Constructor = c, a.fn.tooltip.noConflict = function() { 740 | return a.fn.tooltip = d, this 741 | } 742 | }(jQuery), +function(a) { 743 | "use strict"; 744 | function b(b) { 745 | return this.each(function() { 746 | var d = a(this), 747 | e = d.data("bs.popover"), 748 | f = "object" == typeof b && b; 749 | !e && /destroy|hide/.test(b) || (e || d.data("bs.popover", e = new c(this, f)), "string" == typeof b && e[b]()) 750 | }) 751 | } 752 | var c = function(a, b) { 753 | this.init("popover", a, b) 754 | }; 755 | if (!a.fn.tooltip) 756 | throw new Error("Popover requires tooltip.js"); 757 | c.VERSION = "3.3.7", c.DEFAULTS = a.extend({}, a.fn.tooltip.Constructor.DEFAULTS, { 758 | placement: "right", 759 | trigger: "click", 760 | content: "", 761 | template: '' 762 | }), c.prototype = a.extend({}, a.fn.tooltip.Constructor.prototype), c.prototype.constructor = c, c.prototype.getDefaults = function() { 763 | return c.DEFAULTS 764 | }, c.prototype.setContent = function() { 765 | var a = this.tip(), 766 | b = this.getTitle(), 767 | c = this.getContent(); 768 | a.find(".popover-title")[this.options.html ? "html" : "text"](b), a.find(".popover-content").children().detach().end()[this.options.html ? "string" == typeof c ? "html" : "append" : "text"](c), a.removeClass("fade top bottom left right in"), a.find(".popover-title").html() || a.find(".popover-title").hide() 769 | }, c.prototype.hasContent = function() { 770 | return this.getTitle() || this.getContent() 771 | }, c.prototype.getContent = function() { 772 | var a = this.$element, 773 | b = this.options; 774 | return a.attr("data-content") || ("function" == typeof b.content ? b.content.call(a[0]) : b.content) 775 | }, c.prototype.arrow = function() { 776 | return this.$arrow = this.$arrow || this.tip().find(".arrow") 777 | }; 778 | var d = a.fn.popover; 779 | a.fn.popover = b, a.fn.popover.Constructor = c, a.fn.popover.noConflict = function() { 780 | return a.fn.popover = d, this 781 | } 782 | }(jQuery), +function(a) { 783 | "use strict"; 784 | function b(c, d) { 785 | this.$body = a(document.body), this.$scrollElement = a(a(c).is(document.body) ? window : c), this.options = a.extend({}, b.DEFAULTS, d), this.selector = (this.options.target || "") + " .nav li > a", this.offsets = [], this.targets = [], this.activeTarget = null, this.scrollHeight = 0, this.$scrollElement.on("scroll.bs.scrollspy", a.proxy(this.process, this)), this.refresh(), this.process() 786 | } 787 | function c(c) { 788 | return this.each(function() { 789 | var d = a(this), 790 | e = d.data("bs.scrollspy"), 791 | f = "object" == typeof c && c; 792 | e || d.data("bs.scrollspy", e = new b(this, f)), "string" == typeof c && e[c]() 793 | }) 794 | } 795 | b.VERSION = "3.3.7", b.DEFAULTS = { 796 | offset: 10 797 | }, b.prototype.getScrollHeight = function() { 798 | return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) 799 | }, b.prototype.refresh = function() { 800 | var b = this, 801 | c = "offset", 802 | d = 0; 803 | this.offsets = [], this.targets = [], this.scrollHeight = this.getScrollHeight(), a.isWindow(this.$scrollElement[0]) || (c = "position", d = this.$scrollElement.scrollTop()), this.$body.find(this.selector).map(function() { 804 | var b = a(this), 805 | e = b.data("target") || b.attr("href"), 806 | f = /^#./.test(e) && a(e); 807 | return f && f.length && f.is(":visible") && [[f[c]().top + d, e]] || null 808 | }).sort(function(a, b) { 809 | return a[0] - b[0] 810 | }).each(function() { 811 | b.offsets.push(this[0]), b.targets.push(this[1]) 812 | }) 813 | }, b.prototype.process = function() { 814 | var a, 815 | b = this.$scrollElement.scrollTop() + this.options.offset, 816 | c = this.getScrollHeight(), 817 | d = this.options.offset + c - this.$scrollElement.height(), 818 | e = this.offsets, 819 | f = this.targets, 820 | g = this.activeTarget; 821 | if (this.scrollHeight != c && this.refresh(), b >= d) 822 | return g != (a = f[f.length - 1]) && this.activate(a); 823 | if (g && b < e[0]) 824 | return this.activeTarget = null, this.clear(); 825 | for (a = e.length; a--;) 826 | g != f[a] && b >= e[a] && (void 0 === e[a + 1] || b < e[a + 1]) && this.activate(f[a]) 827 | }, b.prototype.activate = function(b) { 828 | this.activeTarget = b, this.clear(); 829 | var c = this.selector + '[data-target="' + b + '"],' + this.selector + '[href="' + b + '"]', 830 | d = a(c).parents("li").addClass("active"); 831 | d.parent(".dropdown-menu").length && (d = d.closest("li.dropdown").addClass("active")), d.trigger("activate.bs.scrollspy") 832 | }, b.prototype.clear = function() { 833 | a(this.selector).parentsUntil(this.options.target, ".active").removeClass("active") 834 | }; 835 | var d = a.fn.scrollspy; 836 | a.fn.scrollspy = c, a.fn.scrollspy.Constructor = b, a.fn.scrollspy.noConflict = function() { 837 | return a.fn.scrollspy = d, this 838 | }, a(window).on("load.bs.scrollspy.data-api", function() { 839 | a('[data-spy="scroll"]').each(function() { 840 | var b = a(this); 841 | c.call(b, b.data()) 842 | }) 843 | }) 844 | }(jQuery), +function(a) { 845 | "use strict"; 846 | function b(b) { 847 | return this.each(function() { 848 | var d = a(this), 849 | e = d.data("bs.tab"); 850 | e || d.data("bs.tab", e = new c(this)), "string" == typeof b && e[b]() 851 | }) 852 | } 853 | var c = function(b) { 854 | this.element = a(b) 855 | }; 856 | c.VERSION = "3.3.7", c.TRANSITION_DURATION = 150, c.prototype.show = function() { 857 | var b = this.element, 858 | c = b.closest("ul:not(.dropdown-menu)"), 859 | d = b.data("target"); 860 | if (d || (d = b.attr("href"), d = d && d.replace(/.*(?=#[^\s]*$)/, "")), !b.parent("li").hasClass("active")) { 861 | var e = c.find(".active:last a"), 862 | f = a.Event("hide.bs.tab", { 863 | relatedTarget: b[0] 864 | }), 865 | g = a.Event("show.bs.tab", { 866 | relatedTarget: e[0] 867 | }); 868 | if (e.trigger(f), b.trigger(g), !g.isDefaultPrevented() && !f.isDefaultPrevented()) { 869 | var h = a(d); 870 | this.activate(b.closest("li"), c), this.activate(h, h.parent(), function() { 871 | e.trigger({ 872 | type: "hidden.bs.tab", 873 | relatedTarget: b[0] 874 | }), b.trigger({ 875 | type: "shown.bs.tab", 876 | relatedTarget: e[0] 877 | }) 878 | }) 879 | } 880 | } 881 | }, c.prototype.activate = function(b, d, e) { 882 | function f() { 883 | g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !1), b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded", !0), h ? (b[0].offsetWidth, b.addClass("in")) : b.removeClass("fade"), b.parent(".dropdown-menu").length && b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !0), e && e() 884 | } 885 | var g = d.find("> .active"), 886 | h = e && a.support.transition && (g.length && g.hasClass("fade") || !!d.find("> .fade").length); 887 | g.length && h ? g.one("bsTransitionEnd", f).emulateTransitionEnd(c.TRANSITION_DURATION) : f(), g.removeClass("in") 888 | }; 889 | var d = a.fn.tab; 890 | a.fn.tab = b, a.fn.tab.Constructor = c, a.fn.tab.noConflict = function() { 891 | return a.fn.tab = d, this 892 | }; 893 | var e = function(c) { 894 | c.preventDefault(), b.call(a(this), "show") 895 | }; 896 | a(document).on("click.bs.tab.data-api", '[data-toggle="tab"]', e).on("click.bs.tab.data-api", '[data-toggle="pill"]', e) 897 | }(jQuery), +function(a) { 898 | "use strict"; 899 | function b(b) { 900 | return this.each(function() { 901 | var d = a(this), 902 | e = d.data("bs.affix"), 903 | f = "object" == typeof b && b; 904 | e || d.data("bs.affix", e = new c(this, f)), "string" == typeof b && e[b]() 905 | }) 906 | } 907 | var c = function(b, d) { 908 | this.options = a.extend({}, c.DEFAULTS, d), this.$target = a(this.options.target).on("scroll.bs.affix.data-api", a.proxy(this.checkPosition, this)).on("click.bs.affix.data-api", a.proxy(this.checkPositionWithEventLoop, this)), this.$element = a(b), this.affixed = null, this.unpin = null, this.pinnedOffset = null, this.checkPosition() 909 | }; 910 | c.VERSION = "3.3.7", c.RESET = "affix affix-top affix-bottom", c.DEFAULTS = { 911 | offset: 0, 912 | target: window 913 | }, c.prototype.getState = function(a, b, c, d) { 914 | var e = this.$target.scrollTop(), 915 | f = this.$element.offset(), 916 | g = this.$target.height(); 917 | if (null != c && "top" == this.affixed) 918 | return e < c && "top"; 919 | if ("bottom" == this.affixed) 920 | return null != c ? !(e + this.unpin <= f.top) && "bottom" : !(e + g <= a - d) && "bottom"; 921 | var h = null == this.affixed, 922 | i = h ? e : f.top, 923 | j = h ? g : b; 924 | return null != c && e <= c ? "top" : null != d && i + j >= a - d && "bottom" 925 | }, c.prototype.getPinnedOffset = function() { 926 | if (this.pinnedOffset) 927 | return this.pinnedOffset; 928 | this.$element.removeClass(c.RESET).addClass("affix"); 929 | var a = this.$target.scrollTop(), 930 | b = this.$element.offset(); 931 | return this.pinnedOffset = b.top - a 932 | }, c.prototype.checkPositionWithEventLoop = function() { 933 | setTimeout(a.proxy(this.checkPosition, this), 1) 934 | }, c.prototype.checkPosition = function() { 935 | if (this.$element.is(":visible")) { 936 | var b = this.$element.height(), 937 | d = this.options.offset, 938 | e = d.top, 939 | f = d.bottom, 940 | g = Math.max(a(document).height(), a(document.body).height()); 941 | "object" != typeof d && (f = e = d), "function" == typeof e && (e = d.top(this.$element)), "function" == typeof f && (f = d.bottom(this.$element)); 942 | var h = this.getState(g, b, e, f); 943 | if (this.affixed != h) { 944 | null != this.unpin && this.$element.css("top", ""); 945 | var i = "affix" + (h ? "-" + h : ""), 946 | j = a.Event(i + ".bs.affix"); 947 | if (this.$element.trigger(j), j.isDefaultPrevented()) 948 | return; 949 | this.affixed = h, this.unpin = "bottom" == h ? this.getPinnedOffset() : null, this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix", "affixed") + ".bs.affix") 950 | } 951 | "bottom" == h && this.$element.offset({ 952 | top: g - b - f 953 | }) 954 | } 955 | }; 956 | var d = a.fn.affix; 957 | a.fn.affix = b, a.fn.affix.Constructor = c, a.fn.affix.noConflict = function() { 958 | return a.fn.affix = d, this 959 | }, a(window).on("load", function() { 960 | a('[data-spy="affix"]').each(function() { 961 | var c = a(this), 962 | d = c.data(); 963 | d.offset = d.offset || {}, null != d.offsetBottom && (d.offset.bottom = d.offsetBottom), null != d.offsetTop && (d.offset.top = d.offsetTop), b.call(c, d) 964 | }) 965 | }) 966 | }(jQuery); 967 | 968 | 969 | -------------------------------------------------------------------------------- /web/static/js/select2.full.min.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.slice(0,n.length-1).concat(a),k=0;k0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=v.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),n.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var c=r[a];delete r[a],t[a]=!0,m.apply(b,c)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||a,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;hc;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;a>c;c++){var d=Math.floor(36*Math.random());b+=d.toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e":">",'"':""","'":"'","/":"/"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('
    ');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('
  • '),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()}),e=b.$results.find(".select2-results__option[aria-selected]");e.each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j",{"class":"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):0>h-g&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");return"true"===c.attr("aria-selected")?void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{})):void d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){var a=this.$results.find(".select2-results__option--highlighted");return a},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),2>=c?this.$results.scrollTop(0):(g>this.$results.outerHeight()||0>g)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};return a}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id+"-container",a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2"),e=a(".select2.select2-container--open");e.each(function(){var b=a(this);if(this!=d[0]){var c=b.data("element");c.select2("close")}})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){var c=b.find(".selection");c.append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html(''),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},e.prototype.selectionContainer=function(){return a("")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('
      '),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},d.prototype.selectionContainer=function(){var b=a('
    • ×
    • ');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d1;if(d||c)return a.call(this,b);this.clear();var e=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(e)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e0||0===c.length)){var d=a('×');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f),a.preventDefault()}}});var f=document.documentMode,g=f&&11>=f;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){return g?void e.$selection.off("input.search input.searchcheck"):void e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){var a={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};return a}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change"); 2 | if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("focus",function(){c.isOpen()&&e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('
    • '),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a(""),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id,h=this.$container.parents().filter(b.hasScroll);h.off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.topf.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return 0>=e?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null; 3 | },e.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("select2/compat/utils",["jquery"],function(a){function b(b,c,d){var e,f,g=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0===this.indexOf("select2-")&&g.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&(f=d(this),null!=f&&g.push(f))})),b.attr("class",g.join(" "))}return{syncCssClasses:b}}),b.define("select2/compat/containerCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("containerCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptContainerCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("containerCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/dropdownCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("dropdownCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptDropdownCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("dropdownCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/initSelection",["jquery"],function(a){function b(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=c.get("initSelection"),this._isInitialized=!1,a.call(this,b,c)}return b.prototype.current=function(b,c){var d=this;return this._isInitialized?void b.call(this,c):void this.initSelection.call(null,this.$element,function(b){d._isInitialized=!0,a.isArray(b)||(b=[b]),c(b)})},b}),b.define("select2/compat/inputData",["jquery"],function(a){function b(a,b,c){this._currentData=[],this._valueSeparator=c.get("valueSeparator")||",","hidden"===b.prop("type")&&c.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `